asp.net-mvc – 如何从用户友好的URL中删除不必要的信息,然后才
我们正在尝试在ASP.NET MVC应用程序中使用自定义路由来生成此URL:’http://example.com/Person/unnecessaryinfo-42′. “unwantedinfo”是id的名称,它将使用户可以破解URL.以下是我们路线图的代码.这有效但我的控制器操作最终在id参数中以“unnecesaryinfo-42”结束.我可以在它到达控制器操作之前剥离“unwantedinfo-”吗?
routes.MapRoute("person_id","person/{id}",new { controller = "Customer",action = "Details" },new { id = @"unnecessaryinfo-d" }); 编辑: 这是我们最新的代码: routes.MapRoute("person_id","person/{unnecessaryinfo}-{id}",new { id = @"[d]{1,6}" }); 有关从ASP.NET MVC 2 In Action进行路由(第234页)的章节讨论了尽可能避免使用数据库ID,但如果必须使用它们,请添加其他信息以使URL可读.这就是我们正在尝试(不成功)的事情.数据库ID目前的范围是1到6位(并且可能随着时间的推移而增长). 解决方法
你在
Darin’s answer上来回让我相信你可能有另一条路线正在匹配并使用而不是这条路线:
routes.MapRoute("person_id",6}" }); 将路由添加到RouteCollection的顺序切换应解决问题.应该首先将更具体的路线添加到集合中.例如,如果你也有这条路线: routes.MapRoute("person_login",action = "Details" }); 它应该出现在您更具体的“person_id”路径之后,因此您的代码将如下所示: routes.MapRoute("person_id",6}" }); routes.MapRoute("person_login",action = "Details" }); 您提供的“http://example.com/Person/unnecessaryinfo-42”网址将与这两条路线匹配,但由于您的更具体路线首先出现,因此将使用该路线.当映射不太具体的URL时,它将与第一个URL不匹配,因此将使用第二个路由. 那说确定URL匹配的路由可能有点棘手.值得庆幸的是,有两个很好的选项可以帮助进行路由调试: > Phil Haack提供了一个易于实现的URL Routing Debugger 斯蒂芬的解决方案可能是长期使用的最佳解决方案,但菲尔绝对更容易实现低调和脏调试.我将从重新排序您的路由开始,但如果这不能解决问题,请使用上述调试器之一. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 单元测试中的ViewResult.ViewName属性为空
- asp.net – MVC3:如何强制Html.TextBoxFor使用模型值而不是
- asp.net – web.config继承:导致XML解析错误
- ASP.NET:突出显示当前页面的菜单项
- asp.net-mvc – 便携式区域与多个项目区域?
- asp.net – 在.NET 4上发现“有潜在危险的Request.Path ……
- asp.net-mvc-4 – 始终显示在Kendo网格中选择的第一行
- asp.net-mvc-3 – 如何在MVC应用程序中使用POCO
- 我应该在ASP.NET MVC中构建我的下一个Web应用程序吗?
- asp.net-core – ASP.NET Core中的System.Data.Entity.Spat
- unit-testing – 对ActionFilter进行单元测试 –
- asp.net-mvc – 选择在razor html.dropdownlistf
- asp.net – LabelFor EditorFor在同一条线上?
- 在ASP.NET应用程序之间传递会话数据
- asp.net – 没有有效的报告来源 – 水晶报告
- asp.net – SqlCacheDependency不起作用
- 使用名为“PropertiesController”的控制器的ASP
- asp.net – 使用SSL无法找到wcf服务的资源
- asp.net-mvc – 在某些视图中隐藏渲染页面Razor
- asp.net-mvc – ASP.NET MVC 2中的DataAnnotatio