前言

本文流程#1:

  从一个空项目->模拟实现一个从/Home/Test形式的URL敲入->后台逻辑处理->传入后台model参数->调用razor引擎->前台展示

涉及到的知识点#2:

  mvc源码 路由 razor引擎等。

适合人群#3:

  接触mvc有段时间了,但是想深入了解的人。高手就算了

一.新建一个空项目:

 
因为web项目的入口是 Global.asax 。所以,我们也新建一个:
 
F5运行程序
果然进来了,这些是前提,方便后续阅读
 

二.访问路径(模拟与MVC一致)

如果我们想访问Home下面的Index。url为http://localhost:11673/Home/Test.html

那么首先做的就是把这个url改成与mvc访问方式一致的,如http://localhost:11673/Home/Test

那么第一个需要讲的便是路由,通过路由规则来改变指向。

看下mvc的代码是这样写的,这里便是mvc路由规则了

想用路由,首先要引入System.Web.Routing.dll
 
然后在Application_Start中添加路由映射的如下代码,写法如下:
 
你也许会说为啥不跟mvc的一样使用MapRoute啊?其实mvc对Route进行了扩展(使用扩展方法)。所以在不引入MVC库的情况下,是无法使用的。
具体源码在:System.Web.Mvc的RouteCollectionExtensions下面,有意者可前去查看。我们后续还要参照这源码。先贴出一小段

那么下面我们来访问: http://localhost:11673/Home/Test

 
出错了,说没有提供 ".html"  为后缀名的提供程序。
 
需要配置一下 web.congfig ,指定处理程序
 
 
然后再次运行:
 
 
当时你会说,这只是个静态文件啊。如果运行到这里之前还要执行好多逻辑代码呢
 

那么首先想到的是转向一个"一般处理程序"一般处理程序执行逻辑,然后拼装html内容,再返回给前台。

那我们试试如何让它指向一个Handle程序,看看参数提示:
这里要注意route中接收IRouteHandle参数
那么我们就写一个,其实IRouteHandle也就是返回一个IHttpHandler。微软应该是为了扩展性,又加了这么个东西
具体实现代码如下:
F5运行:
果然可以啊……

好了,我们去看看MVC是咋处理的,请看mvc的RouteConfig,并进入源码.请顺着箭头看。本人装了自动反编译工具,所以看源码很方便

 
其实处理过程跟我们是一样的……
 

那么你又会问了,人家想要用Razor视图啊。和后台数据绑定多帅啊^_^……

 
那么我们就要引入Razor引擎了,引入dll:System.Web.Razor
请注意ProcessRequest中的处理过程。通过razor引擎编译html代码,注意Razor.Parse第一个参数为:字符串内容,第二个参数为传入的Model。
所以输出结果为:"欢迎你 test"
F5运行下看看:
 
那么再来进一步处理,在后台写个Students集合,绑定到指定的RazorTest.html页面。
 注意这次我们是跟一个页面进行数据绑定了。是不是越来越像了。  看看结果,确实像所想的那样
 
 
 
好吧,就到这里吧。也是越说越多的,越深入就会越来越深入的(需要源码的请索要)。闲的没事,还是写写博客吧……下节继续吧!

asp.net MVC 模拟实现与源码分析的更多相关文章

  1. 17+个ASP.NET MVC扩展点,含源码{转}

    1.自定义一个HttpModule,并将其中的方法添加到HttpApplication相应的事件中!即:创建一个实现了IHttpmodule接口的类,并将配置WebConfig.在自定义的HttpMo ...

  2. WinDBg定位asp.net mvc项目异常崩溃源码位置

    项目介绍:asp.net mvc + angular +iis(windows)+windows server 系统莫名崩溃 最近有个系统默认奇妙崩溃50x,服务整体变成无响应,当运维告知我只有重启应 ...

  3. spring mvc 启动过程及源码分析

    由于公司开源框架选用的spring+spring mvc + mybatis.使用这些框架,网上都有现成的案例:需要那些配置文件.每种类型的配置文件的节点该如何书写等等.如果只是需要项目能够跑起来,只 ...

  4. ASP.Net Core Configuration 理解与源码分析

    Configuration 在ASP.NET Core开发过程中起着很重要的作用,这篇博客主要是理解configuration的来源,以及各种不同类型的configuration source是如何被 ...

  5. ASP.NET MVC 5.0 参考源码索引

    http://www.projky.com/asp.netmvc/5.0/Microsoft/AspNet/Mvc/Facebook/FacebookAppSettingKeys.cs.htmlhtt ...

  6. ASP.NET MVC 4.0 参考源码索引

    http://www.projky.com/asp.netmvc/4.0/Microsoft/AspNet/Mvc/Facebook/FacebookAppSettingKeys.cs.htmlhtt ...

  7. ASP.NET MVC 3.0 参考源码索引

    http://www.projky.com/asp.netmvc/3.0/Microsoft/Internal/Web/Utils/CommonResources.cs.htmlhttp://www. ...

  8. ASP.NET MVC 2.0 参考源码索引

    http://www.projky.com/asp.netmvc/2.0/System/Web/Mvc/AcceptVerbsAttribute.cs.htmlhttp://www.projky.co ...

  9. ASP.NET MVC 1.0 参考源码索引

    http://www.projky.com/asp.netmvc/1.0/System/Web/Mvc/AcceptVerbsAttribute.cs.htmlhttp://www.projky.co ...

随机推荐

  1. libvlc media player in C# (part 2)

    原文 http://www.helyar.net/2009/libvlc-media-player-in-c-part-2/ I gave some simplified VLC media play ...

  2. WebView Android 调用js且须要获取返回结果

    Android webView调用js方法非常easy, webView.loadUrl("javascrpt:yourFunction()"); 可是此方法没有办法获取返回结果 ...

  3. Android接口测试-JUnit入门

    1.下载:http://www.junit.org 2.配置AndroidManifest.xml,在application节点加入 <!--使用单元测试库-->        <u ...

  4. 使用Oracle 9i工具管理数据库 - 初学者系列 - 学习者系列文章

    前面介绍了Oracle 9i的安装,本文大概介绍下Oracle 9i提供的管理工具的使用. 1 打开数据库配置工具 2 下一步 3 下一步 4 下一步.这里输入数据库名和SID 5 下一步 6 下一步 ...

  5. dbcp的配置

    tomcat的 配置,进入conf->context.xml <Resource name="mysql"     auth="Container" ...

  6. MVC Bootstrap极速开发框架

    ASP.NET MVC Bootstrap极速开发框架 前言 每次新开发项目都要从头开始设计?有木有一个通用的快速开发框架?并且得是ASP.NET MVC  And Bootstrap?数据库不要手工 ...

  7. parent和top

    function show(){ //parent是获取本窗口的父窗口   //window.parent.location.href="http://www.baidu.com" ...

  8. swfupload多文件上传[附源码]

    swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器控件提供了很简单的上传,但是有回传,还没有进度条提示.这次我们演示利用swfupload多文件上传,项 ...

  9. AMQP(Advanced Message Queuing Protocol)

    一套确定的消息交换功能,也就是“高级消息交换协议模型”.AMQP模型包括一套用于路由和存储消息的功能模块,以及一套在这些模块之间交换消息的规则. 一个网络线级协议(数据传输格式),客户端应用可以通过这 ...

  10. [Usaco2007 Dec]穿越泥地[bfs][水]

    Description 清早6:00,Farmer John就离开了他的屋子,开始了他的例行工作:为贝茜挤奶.前一天晚上,整个农场刚经受过一场瓢泼大雨的洗礼,于是不难想见,FJ 现在面对的是一大片泥泞 ...