我有一个网站,网址看起来像这样;
Home/LocationPage?locationId=f25a9ba4-54dc-4e6a-bdbf-094a5a6f7801
我希望它看起来像是什么;
Home/My Restaurant
我已经尝试过映射这样的路线;
routes.MapRoute(
"Location",
"{Controller}/{LocationName}",
new { controller = "Home", action = "LocationPage", LocationName = "" }
但似乎无法让URL得到改变。
答案 0 :(得分:0)
保留您刚制作的路线,但您可能需要添加更多内容。
添加路由约束(或覆盖控制器上的OnActionExecuting方法或向操作方法添加属性),查找数据库中的LocationName路由参数,并且(如果找到)将locationId参数添加到路径参数。然后创建一个名为LocationPage的动作,它采用locationId(位置名称是可选的)。
这样你就会得到很好的网址,但是这个动作并不需要进行查找。
答案 1 :(得分:0)
如果您在LocationId
收到名为Action
的参数,则需要更改路线:
routes.MapRoute(
"Location",
"{Controller}/{LocationId}",
new { controller = "Home", action = "LocationPage", LocationId = "" }
并且不要忘记,通过这种方式,您不会将此参数作为Guid
获取,那么您应该使用您提供的名称检索Guid
值的逻辑。