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

如题所述

第1个回答  2022-10-25

     建立在 迷你版 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