我正在研究Asp net MVC剃须刀网络应用程序。 我正在尝试实现URL重写。
我的网址就像
/User/CategoryDetail?cid=2&lid=b20319e0-55b1-4233-8c63-c35b98c79a84
但我希望它看起来像
/User/CategoryDetail/[CategoryName]OR[LocationName]
任何曾经建议解决方案实现这一点。 提前谢谢。
答案 0 :(得分:1)
如果CategoryName是可选的并且LocationName是必填字段,则Satpal建议可用。如果两个字段都是可选的,那么它不起作用。因为路由无法确定提供哪个属性。在这种情况下,您有两种选择。一种选择是为不同的参数组合加上IRouteConstraints定义3种不同的路径,
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 }
);
提供的方法