不走寻常路:在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>

NET技术不走寻常路:在WebForm中使用MVC,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。