简单的mvc之一:简单的开始
mvc学习到现在,相对所学到的一系列的知识做一个总结,于是就有了这个标题—简单的mvc。文如名,写的是简单的mvc的知识,目标群也不言而喻。这一篇来个简单的开始,从头建立一个web项目,比如hello world。
asp.net项目的请求处理核心是IHttpHandler,不论是之前的Page,还是之后MVC。所以最简单的web项目,就是只有一个IHttpHandler的项目。项目只有两个文件,一个.ashx文件,内容:
<%@ WebHandler Class="Danyuers.SimpleMvc.Hello" Language="C#" %>
另外一个是相应的代码文件,建立一个名为Hello的类,也就是上面的Class属性所指向的类别,代码如下:
namespace Danyuers.SimpleMvc { public class Hello : IHttpHandler { public bool IsReusable { get { return false; } } public void ProcessRequest(HttpContext context) { context.Response.Write("<h1>hello world!</h1>"); context.Response.End(); } } }
然后编译(请将编译目标文件改为bin),映射到虚拟目录,通过localhost:xxxx/xx.ashx即可访问到建立的项目。记得添加相应的引用(system.web)。
好了,简单的项目搭建已经完成,但这不是真正的mvc,mvc最直观的表现就是路由映射,区别于webform的文件映射。一个简单的mvc项目需要哪些东西呢?第一,global.asax文件,定位到HttpApplication;第二,路由映射表,定义路由;第三,路由映射对象,也就是控制器。如同上面的ashx一样,global.asax也只是包含一行指令:
<%@ Application Codebehind="Global.cs" Inherits="Danyuers.SimpleMvc.MvcApplication" Language="C#" %>
还是同上,建立global.cs,在其中建立SimpleMvcApplication,代码如下:
using System; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace Danyuers.SimpleMvc{ public class MvcApplication : HttpApplication { protected void Application_Start() { RouteRegister.Regist(RouteTable.Routes); } } }
注意其中的RouteRegister,其中定义了我们需要的路由映射。建立单独的代码文件RouteRegister.cs,代码如下:
using System; using System.Web.Mvc; using System.Web.Routing; namespace Danyuers.SimpleMvc{ internal class RouteRegister { public static void Regist(RouteCollection routes) { routes.RouteExistingFiles = false; routes.Ignore("{resources}.axd/{pathInfo*}"); routes.MapRoute( name: "default", url: "{controller}/{action}/{id}", defaults: new { controller = "Hello", action = "Index", id = UrlParameter.Optional }, namespaces:new String[]{"Danyuers.SimpleMvc.Controllers*"} ); } } }
从其中可以很明显看到建立一个通用路由:{controller}/{action}/{id}。最后一步,建立控制器。建立Hello.cs,代码如下:
using System; using System.Web.Mvc; namespace Danyuers.SimpleMvc.Controllers { public class HelloController:Controller{ public void Index() { Response.Write("<h1>Hello,world!!</h1>"); Response.End(); } } }
好了,最后编译,iis映射,运行即可,相较于最初的单httphandler项目,这次直接访问域名即可。
相较于webform,mvc的代码分布更加分散,却也更加整洁,也更加富有弹性。
posted on 2013-08-29 10:26 wangjieas 阅读(1683) 评论(5) 编辑 收藏 举报