asp.net-mvc – ASP.Net MVC路由遗传URL将查询字符串ID传递给控
我们目前正在IIS6上运行,但希望尽快转移到IIS 7.
我们正在将现有的Web表单站点移动到ASP.Net MVC.我们有很多传统页面需要重定向到新控制器.我看到这篇看起来很有趣的文章: 所以我想我可以编写自己的路由处理程序,或者在控制器中进行重定向.后者略微闻起来. 但是,我不太确定如何处理遗留URL中的查询字符串值,理想情况下我需要传递给我的控制器的Show()方法.例如: 旧版网址:
我想要这个映射到:
实际上我的Show动作采用了艺术家的名字,所以我确实希望将用户从Legacy URL重定向到/ artists / Madonna 谢谢! 解决方法
根据您提到的文章,这些是完成此任务的步骤:
1 – 你的LegacyHandler必须从查询字符串中提取路由值(在这种情况下,它是艺术家的id) public class LegacyHandler:MvcHandler { private RequestContext requestContext; public LegacyHandler(RequestContext requestContext) : base(requestContext) { this.requestContext = requestContext; } protected override void ProcessRequest(HttpContextBase httpContext) { string redirectActionName = ((LegacyRoute) RequestContext.RouteData.Route).RedirectActionName; var queryString = requestContext.HttpContext.Request.QueryString; foreach (var key in queryString.AllKeys) { requestContext.RouteData.Values.Add(key,queryString[key]); } VirtualPathData path = RouteTable.Routes.GetVirtualPath(requestContext,redirectActionName,requestContext.RouteData.Values); httpContext.Response.Status = "301 Moved Permanently"; httpContext.Response.AppendHeader("Location",path.VirtualPath); } } 2-你必须将这两条路线添加到RouteTable,在那里你有一个带有ViewArtist动作的ArtistController接受一个int类型的id参数 routes.Add("Legacy",new LegacyRoute("Artists/ViewArtist.aspx","Artist",new LegacyRouteHandler())); routes.MapRoute("Artist","Artist/ViewArtist/{id}",new { controller = "Artist",action = "ViewArtist",}); 现在您可以导航到以下网址:/Artists/ViewArtist.aspx?id=123 并且您将被重定向到:/ Artist / ViewArtist / 123 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何自定义网站项目的构建?
- asp.net-mvc-3 – 一个窗体中的多个提交输入
- asp.net-mvc – 自动捆绑/缩小是否已在最终版本的MVC 4中获
- asp.net – 在Google Chrome浏览器中加载两次
- asp.net – 适用于多个用户的EWS通知中心
- active-directory – IdentityServer3 – 适用于ActiveDire
- asp.net – 如何转换上传的视频并从此文件中获取屏幕截图?
- asp.net – 组合两个List(Of String)最有效的方法是什么?
- asp.net-mvc-3 – 在MVC3中循环渲染部分视图
- 如何在ASP.NET WebService调用中动态初始化文化?
- 在ASP.NET中使用?感到困惑
- asp.net-mvc – 在IIS6上使用jqGrid和ASP.NET MV
- 回发后的ASP.Net无法找到指定的URL
- .Net Core微服务入门全纪录(完结)——Ocelot与
- 将typescript定义文件编译到wwwroot文件夹时出现
- asp.net-web-api – 如何创建角色并将用户添加到
- ASP .NET MVC 4:WebSecurity.CreateUserAndAcco
- asp.net-mvc – 将ASP.NET MVC应用程序与Entity
- asp.net – web.config和app.config混淆
- asp.net-core – 如何检索当前响应体长度?