在WebForm中使用MVC
2011-08-04 10:53 Kevin-wang 阅读(331) 评论(1) 收藏 举报摘自:http://kb.cnblogs.com/page/93085/
解决思路:
不改变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>
运行结果:

项目结构:

看,没有Global.asax。
演示代码下载:
更新:
不走寻常路,是为了找到正确的路,感谢老赵指出了正确的路:
在Global.asax.cs的Application_Start中使用下面的代码:
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); RouteTable.Routes.MapRoute( "Test.aspx", "Test.aspx", new { controller = "Test", action = "Index" } );
浙公网安备 33010602011771号