一起谈.NET技术,不走寻常路:在WebForm中使用MVC
2011-09-01 23:59
429 查看
问题场景:
在改进博客园博客后台的过程中,有一个页面我们想用ASP.NET MVC来写。但我们不想通过设置<modules runAllManagedModulesForAllRequests="true"/>使用System.Web.Routing来处理请求,因为不能确定这是否会与我们现有的URL重写产生冲突。我们只是想用Razor爽一下。
解决思路:
不改变ASP.NET管线的请求处理流程,请求还是正常到达一个.aspx页面,然后再转手给ASP.NET MVC。也就是把WebForm作为一个中转站。
好处:
在现有项目中,以最小的代价用上ASP.NET MVC。先品尝一下Razor的美味。
解决方法:
用System.Web.Mvc.MvcHandler可以轻松搞定,请看下面Home.aspx的代码:
运行结果:
![](http://pic002.cnblogs.com/images/2011/1/2011030511394696.jpg)
项目结构:
![](http://pic002.cnblogs.com/images/2011/1/2011030511435276.jpg)
看,没有Global.asax。
演示代码下载:
CnblogsMvcDemo0305.rar
更新:
不走寻常路,是为了找到正确的路,感谢老赵指出了正确的路:
在Global.asax.cs的Application_Start中使用下面的代码:
在改进博客园博客后台的过程中,有一个页面我们想用ASP.NET MVC来写。但我们不想通过设置<modules runAllManagedModulesForAllRequests="true"/>使用System.Web.Routing来处理请求,因为不能确定这是否会与我们现有的URL重写产生冲突。我们只是想用Razor爽一下。
解决思路:
不改变ASP.NET管线的请求处理流程,请求还是正常到达一个.aspx页面,然后再转手给ASP.NET MVC。也就是把WebForm作为一个中转站。
好处:
在现有项目中,以最小的代价用上ASP.NET MVC。先品尝一下Razor的美味。
解决方法:
用System.Web.Mvc.MvcHandler可以轻松搞定,请看下面Home.aspx的代码:
<%@ Page Language="C#" AutoEventWireup="true" %> <script runat="server"> protected override void OnInit(EventArgs e) { System.Web.Routing.RequestContext requestContext = new System.Web.Routing.RequestContext(); requestContext.HttpContext = new HttpContextWrapper(Context); requestContext.RouteData = new System.Web.Routing.RouteData(); requestContext.RouteData.Values.Add("controller", "Home"); requestContext.RouteData.Values.Add("action", "Index"); IHttpHandler handler = new System.Web.Mvc.MvcHandler(requestContext); handler.ProcessRequest(Context); } </script>
运行结果:
![](http://pic002.cnblogs.com/images/2011/1/2011030511394696.jpg)
项目结构:
![](http://pic002.cnblogs.com/images/2011/1/2011030511435276.jpg)
看,没有Global.asax。
演示代码下载:
CnblogsMvcDemo0305.rar
更新:
不走寻常路,是为了找到正确的路,感谢老赵指出了正确的路:
在Global.asax.cs的Application_Start中使用下面的代码:
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); RouteTable.Routes.MapRoute( "Test.aspx", "Test.aspx", new { controller = "Test", action = "Index" } );
相关文章推荐
- 一起谈.NET技术,跟ASP.NET MVC一起使用jQuery
- 一起谈.NET技术,Asp.net mvc 2中使用Ajax的三种方式
- 一起谈.NET技术,分享在MVC3.0中使用jQuery DataTable 插件
- 一起谈.NET技术,ASP.NET MVC 3 —— Model的使用?
- 一起谈.NET技术,ASP.NET MVC 2中使用jQuery UI控件详解
- 一起谈.NET技术,ASP.NET MVC验证框架中关于属性标记的通用扩展方法
- 一起谈.NET技术,使用编码招式(Coding Katas)、BDD和VS2010项目模板
- 一起谈.NET技术,Visual Studio下使用jQuery的10个技巧
- 一起谈.NET技术,ASP.NET缓存初探 使用得当是关键
- 不走寻常路:在WebForm中使用MVC(转载)
- 一起谈.NET技术,技巧:使用可扩展对象模式扩展HttpApplication
- 一起谈.NET技术,ASP.NET MVC 入门介绍 (下)
- 一起谈.NET技术,NVelocity for ASP.NET MVC
- 一起谈.NET技术,使用VS2010代码分析功能增强ASP.NET应用程序安全
- 一起谈.NET技术,使用DeeepZoom Composer进行富图像应用的开发(翻译--2)
- 一起谈.NET技术,ASP.NET MVC 验证方式(1)
- 一起谈.NET技术,MonoTouch中的MVC简介
- 一起谈.NET技术,在 ASP.NET 中实现不同角色的用户使用不同登录界面的方法
- 一起谈.NET技术,探索Asp.net mvc 的文件上传(由浅入深)
- 一起谈.NET技术,ASP.NET MVC 3 Beta新特性以及.Net开源的趋势----最新译文