ASP.NET编程:基于ASP.NET2.0的非HttpModule盗窟版MV...
语言是不是不是最重要的?在ASP.NetMVC框架中是利用地点拦阻的,固然很好用,可是装起来太年夜了,设置也贫苦。本文经由过程代码理论,在ASP.Net2.0框架下完成一套浅易的MVC框架。MVC框架难于构建的中央在于Controller与View的分别和分别后数据能够便利地传输。为了坚持代码的简便,将利用ashx文件作为Controller,用aspx页面作为View。讲起来对照费力,把项目文件放下去,而上面只作一个复杂的申明。项目是VS2008的项目,巨细15K。下载地点:DotNetMVC.rar
起首构建一个Controller基类。
以下为援用的内容:
Controller类
/**
*author:yurow
*http://birdshover.cnblogs.com
*description:
*
*history:createdbyyurow2009-9-207:30:04
*/
usingSystem.Web;
usingSystem.Web.Services;
namespaceDotNetMVC.MVC{
///<summary>
///把持器
///</summary>
publicabstractclassController<T,K>:IHttpHandler{
///<summary>
///以后哀求
///</summary>
protectedMyRequestRequest;
///<summary>
///输入
///</summary>
protectedHttpResponseResponse;
///<summary>
///前往到View页面的数据
///</summary>
protectedMvcViewData<T,K>ViewData;
///<summary>
///把持器称号
///</summary>
privatestringcontrollerName;
///<summary>
///把持器操纵办法
///</summary>
publicabstractvoidAction();
///<summary>
///实行哀求
///</summary>
///<paramname="context"></param>
publicvoidProcessRequest(HttpContextcontext){
Request=context.Request;
Response=context.Response;
//这里能够用反射的体例举行带参数的操纵,这里为了简化,往失落了这部分
//MethodInfomethod=this.GetType().GetMethod("Action",newType);
//if(method==null){
//thrownewNotImplementedException("没有完成!");
//}
//objectdata=method.Invoke(this,null)asobject;
ViewData=newMvcViewData<T,K>();
Action();
context.Items.Add("MvcViewData",ViewData);
context.Server.Transfer("~/View/"+ControllerName+".aspx",false);
}
///<summary>
///把持称号,不设置默许为View页面与把持器称号同名
///好比,在Login.ashx哀求中,默许挪用View/Login.aspx的页面作为显现页面。
///当登录乐成后,设置其为LoginOK,则会挪用View/LoginOK.aspx
///</summary>
protectedstringControllerName{
get{
if(string.IsNullOrEmpty(controllerName))
returnthis.GetType().Name;
returncontrollerName;
}
set{
controllerName=value;
}
}
publicboolIsReusable{
get{
returnfalse;
}
}
}
}
Controller在ProcessRequest办法中挪用aspx页面,内里设置了一个虚办法Action在详细的ashx文件中重载。
上面是Default.ashx.cs文件的写法
以下为援用的内容:
Default
singDotNetMVC.MVC;
namespaceDotNetMVC{
///<summary>
///$codebehindclassname$的择要申明
///</summary>
publicclassDefault:Controller<string,string>{
publicoverridevoidAction(){
}
}
}
在Controller中,另有两个主要的器材一个是传送给View数据用的,一个是显现哪一个View的(经由过程ControllerName这个属性)
数据库有很多应用领域,但是如果你单单学数据库的话基本上做数据库管理员比较合适而已,跟领域结合的你还得再学习那些领域知识。(其实数据挖掘我真是不懂,本来这学期开了一门课了。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。 Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境! ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
页:
[1]