asp.net-mvc-3 – 使用和不使用查询字符串路由旧请求
发布时间:2020-12-16 03:53:26 所属栏目:asp.Net 来源:网络整理
导读:(开始之前:我知道 this和 this.我想找到一个更简洁的解决方案 – 如果可能的话 – 稍微更具体的问题) 我正在重写MVC中的旧Webforms应用程序.像往常一样,不应该破坏永久链接. 我正在使用标准{controller} / {action} / {id}路由.传统路径通常是SomePage.aspx
(开始之前:我知道
this和
this.我想找到一个更简洁的解决方案 – 如果可能的话 – 稍微更具体的问题)
我正在重写MVC中的旧Webforms应用程序.像往常一样,不应该破坏永久链接. 我正在使用标准{controller} / {action} / {id}路由.传统路径通常是SomePage.aspx?ID = xxx,我有一个特殊情况,其中Foo.aspx是Bar的列表(新URL:/ Bar或/ Bar / Index)和 一种可能的解决方法是在默认MapRoute之前添加以下内容: routes.MapRoute("Bar View","Foo.aspx",new { controller = "Bar",action = "View" }); 然后在BarController中定义相应的操作: public ActionResult View(int? id) { if (id == null) return RedirectToAction("Index"); return View(); } 这有两个问题: >现在,如果我创建一个ActionLink,它将使用旧格式 我可以手动映射遗留URL(我不需要通用解决方案,只有大约8页) 这是一个新项目,所以我没有任何关系. 解决方法
我能够基于
Dangerous’ idea加上基于
this answer的约束来解决这个问题.
我的新路线表是: routes.MapRoute("Bar","Bar/{action}/{id}",new { controller = "Bar",action = "Index",id = UrlParameter.Optional }); routes.MapRoute("Bar View",new {controller = "Bar",action = "View"},new {id = new QueryStringConstraint()}); routes.MapRoute("Bar Index",action = "Index" }); routes.MapRoute("Default",/*...*/); 并且QueryStringConstraint不可能更简单: public class QueryStringConstraint : IRouteConstraint { public bool Match(HttpContextBase httpContext,Route route,string parameterName,RouteValueDictionary values,RouteDirection routeDirection) { return httpContext.Request.QueryString.AllKeys .Contains(parameterName,StringComparer.InvariantCultureIgnoreCase); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 重构遗留的WebForms应用程序以更好地分离关注点
- asp.net页面生命周期
- asp.net – 来自asp app的流媒体mime类型’application / p
- asp.net-mvc-3 – 带抽象类的mvc3 razor editortemplate
- asp.net – Web API中的每路径格式化程序配置
- 如何实现像WCF一样的Asp.net MVC OneWay / FireAndForget调
- asp.net-mvc – 使用LINQ的多个或单个存储库
- Asp.net SignalR 让实时通讯变得如此简单
- 解决“这个操作需要IIS集成管道模式”在ASP.net MVC2
- 为什么ASP.NET框架在响应中添加“X-Powered-By:ASP.NET”H
推荐文章
站长推荐
- asp.net-mvc – C#Razor Forms – 插入角度属性
- asp.net-mvc – asp.net mvc – 当按钮名称全部相
- asp.net – 使用Active Directory的REST API的授
- Asp.net MVC可见/隐藏
- asp.net mvc 之旅 —— 第六站 ActionFilter的应
- 在Textbox asp.net上使用JQuery DatePicker
- asp.net – jQuery AJAX在Firefox中速度慢,在IE中
- asp.net – IIS 7的最大默认POST请求大小 – 如何
- asp.net-mvc – @ Html.ValidationSummary是否适
- asp.net-mvc-3 – 带抽象类的mvc3 razor editort
热点阅读