2024-06-26 00:30:38
建立在 迷你版 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