|
問題場景:
在改進(jìn)博客園博客后臺的過程中,有一個頁面我們想用ASP.NET MVC來寫。但我們不想通過設(shè)置<modules runAllManagedModulesForAllRequests="true"/>使用System.Web.Routing來處理請求,因?yàn)椴荒艽_定這是否會與我們現(xiàn)有的URL重寫產(chǎn)生沖突。我們只是想用Razor爽一下。
解決思路:
不改變ASP.NET管線的請求處理流程,請求還是正常到達(dá)一個.ASPx頁面,然后再轉(zhuǎn)手給ASP.NET MVC。也就是把WebForm作為一個中轉(zhuǎn)站。
好處:
在現(xiàn)有項(xiàng)目中,以最小的代價用上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技術(shù):不走尋常路:在WebForm中使用MVC,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。