在Asp.net MVC Razor中重写包含GUID的URl作为查询字符串
本文关键字:URl 字符串 查询 GUID 包含 net Asp MVC Razor 重写 | 更新日期: 2023-09-27 18:29:06
我正在开发Asp-netMVC剃刀式web应用程序。我正在尝试实现URL重写。
我的Urls就像
/User/CategoryDetail?cid=2&lid=b20319e0-55b1-4233-8c63-c35b98c79a84
但我希望它看起来像
/User/CategoryDetail/[CategoryName]OR[LocationName]
可以为实现这一点的解决方案提出任何建议。提前谢谢。
Satpal建议在CategoryName是可选字段且LocationName是必填字段的情况下有效。如果这两个字段都是可选的,那么它就不起作用。因为路由无法确定提供了哪个属性。在这种情况下,您有两种选择。一种选择是为不同的参数组合定义3条不同的路线加上IRouteConstraints,
routes.MapRoute(name: "CategoryDetail",
url: "/{controller}/{CategoryDetail}/{LocationName}",
defaults: new { controller = "User", action = "Login" },
constraints: {LocationName=@"^'d+$"}
);
routes.MapRoute(name: "CategoryDetail",
url: "/{controller}/{CategoryDetail}/{CategoryName}",
defaults: new { controller = "User", action = "Login" },
constraints: {CategoryName= new GuidConstraint() }
);
routes.MapRoute(name: "CategoryDetail",
url: "/{controller}/{CategoryDetail}/{LocationName}/{CategoryName}",
defaults: new { controller = "User", action = "Login", CategoryName = UrlParameter.Optional }
);
对于GuidConstraint,请访问此处。