我是靠谱客的博主 踏实糖豆,最近开发中收集的这篇文章主要介绍不走寻常路:在WebForm中使用MVC,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题场景:

在改进博客园博客后台的过程中,有一个页面我们想用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 >

运行结果:

2011030511394696.jpg

项目结构:

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 " }
);

最后

以上就是踏实糖豆为你收集整理的不走寻常路:在WebForm中使用MVC的全部内容,希望文章能够帮你解决不走寻常路:在WebForm中使用MVC所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部