asp.net mvc5 伪静态
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>
效果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?