標籤:
asp.net mvc5 偽靜態 WebForm
Mvc4和5通用
1、背景:老項目WebForm開發 需要 融合到新項目Mvc5開發
2、需求:Url地址TruckDetail.aspx?id=455 達到效果 truck/455.html
3、不是最佳方案,但是個過度項目所以達到效果ok,歡迎丟轉。
第一步:繼承IRouteHandler
public class OldWebFormsRouteHandler : IRouteHandler { private string pageName = string.Empty; private string id = string.Empty; public IHttpHandler GetHttpHandler(RequestContext requestContext) { pageName = requestContext.RouteData.GetRequiredString("oldPageName"); id = requestContext.RouteData.GetRequiredString("id"); string path="/Pages/" + this.pageName + ".aspx"; IHttpHandler MyHander = BuildManager.CreateInstanceFromVirtualPath(path, typeof(System.Web.UI.Page)) as IHttpHandler; return MyHander; } }
第二步:在預設規則前ADD 注意.html
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.Add("MyRoute", new Route("{oldPageName}/{id}.html", new OldWebFormsRouteHandler())); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }
第三步:修改Web.config
<system.webServer> <modules runAllManagedModulesForAllRequests="true"/></system.webServer>
第四步:aspx頁面獲得參數Request.QueryString["id"]換成RouteData.Values["id"]
<form id="form1" runat="server"> <div> id:<%=RouteData.Values["id"]==null?"yy":RouteData.Values["id"].ToString() %><br /> oldPageName:<%=RouteData.Values["oldPageName"]==null?"no":RouteData.Values["oldPageName"].ToString() %> </div></form>
效果:
轉載請註明來源地址:http://www.cnblogs.com/huangyoum/p/4154338.html
asp.net mvc5 偽靜態