ASP.NET MVC 4框架:ASP.NET MVC上的Web应用

  ? 建立在 迷你版 ASP NET MVC上的Web应用

 在正式介绍我们自己创建的 迷你版 ASP NET MVC的实现原理之前 不妨来看看建立在该框架之上的Web应用如何定义 通过Visual Studio创建一个空的ASP NET? Web应用(注意不是ASP NET MVC应用)并不会引用System Web Mvc dll这个程序集 所以在接下来的程序中看到的所谓MVC的组件都是我们自行定义的

 首先定义了如下一个SimpleModel类型 它表示最终需要绑定到View上的数据 为了验证针对Controller和Action的解析机制 SimpleModel定义的两个属性分别表示当前请求的目标Controller和Action

 public class SimpleModel

 {

 public string Controller { get; set; }

 public string Action { get; set; }

 }

 与真正的ASP NET MVC应用开发一样 我们需要定义Controller类 按照约定的命名方式(以字符 Controller 作为后缀) 我们定义了如下一个HomeController HomeController实现的抽象类型ControllerBase是我们自行定义的 以自定义的ActionResult作为返回类型的Index方法表示Controller的Action 它接受一个SimpleModel类型的对象作为参数 该Action方法返回的ActionResult是一个RawContextResult对象 顾名思义 RawContextResult就是将指定的内容进行原样返回 在这里我们将作为参数的SimpleModel对象的Controller和Action属性显示出来

 public class HomeController: ControllerBase

 {

 public ActionResult Index(SimpleModel model)

 {

 string content = string Format( Controller: { }<br/>Action:{ }

 model Controller model Action)

 return new RawContentResult(content)

 }

 }

 ASP NET MVC根据请求地址来解析出用于处理该请求的Controller的类型和Action方法名称 具体来说 我们预注册一些包含Controller和Action名称作为占位符的(相对)地址模板 如果请求地址符合相应地址模板的模式 Controller和Action名称就可以正确地解析出来 和ASP NET MVC应用类似 我们在Global asax中注册了如下一个地址模板({controller}/{action}) 我们还注册了一个用于创建Controller对象的工厂 RouteTable ControllerBuilder和DefaultControllerFactory都是我们自定义的类型

 public class Global : System Web HttpApplication

 {

 protected void Application_Start(object sender EventArgs e)

 {

 RouteTable Routes Add( default

 new Route{Url = {controller}/{action} })

 ControllerBuilder Current SetControllerFactory(

 new DefaultControllerFactory())

 }

 }

 正如上面所说的 ASP NET MVC是通过一个自定义的HttpModule实现的 在这个 迷你版 ASP NET MVC框架中我们也将其起名为UrlRoutingModule 在运行Web应用之前 我们需要通过配置对该自定义HttpModule进行注册 下面是相关的配置

 <configuration>

 <system webServer>

 <modules>

 <add name= UrlRoutingModule

 type= WebApp UrlRoutingModule WebApp />

 </modules>

 </system webServer>

 </configuration>

 到目前为止 所有的编程和配置工作已经完成 为了让定义在HomeController中的Action方法Index来处理针对该Web应用的访问请求 我们需要指定与之匹配的地址(符合定义在注册地址模板的URL模式) 如图 所示 由于在浏览器中输入地址(//…/Home/Index)正好对应着HomeController的Action方法Index 所以对应的方法会被执行 而执行的结果就是将当前请求的目标Controller和Action的名称显示出来 (S )

 图 ? 采用符合注册的路由地址模板的地址访问Web应用

 上面演示了如何在我们自己创建的 迷你版 ASP NET MVC框架中创建一个Web应用 从中可以看到和创建一个真正的ASP NET MVC应用别无二致 接下来我们就来逐步地分析这个自定义的ASP NET MVC框架是如何建立起来的 而它也代表了真正的ASP NET MVC框架的工作原理

? 返回目录 ASP NET MVC 框架揭秘

? 编辑推荐

? ASP NET开发培训视频教程

? Microsoft NET框架程序设计视频教程

? Java程序性能优化 让你的Java程序更快 更稳定

? Visual C++音频/视频技术开发与实战

lishixinzhi/Article/program/net/201311/16113