无法让MVC路由工作

时间:2011-12-26 03:32:22

标签: asp.net-mvc routing asp.net-mvc-routing

我有一个网站,网址看起来像这样;

Home/LocationPage?locationId=f25a9ba4-54dc-4e6a-bdbf-094a5a6f7801

我希望它看起来像是什么;

Home/My Restaurant

我已经尝试过映射这样的路线;

        routes.MapRoute(
            "Location",
            "{Controller}/{LocationName}",
            new { controller = "Home", action = "LocationPage", LocationName = "" }

但似乎无法让URL得到改变。

2 个答案:

答案 0 :(得分:0)

保留您刚制作的路线,但您可能需要添加更多内容。

添加路由约束(或覆盖控制器上的OnActionExecuting方法或向操作方法添加属性),查找数据库中的LocationName路由参数,并且(如果找到)将locationId参数添加到路径参数。然后创建一个名为LocationPage的动作,它采用locationId(位置名称是可选的)。

这样你就会得到很好的网址,但是这个动作并不需要进行查找。

答案 1 :(得分:0)

如果您在LocationId收到名为Action的参数,则需要更改路线:

routes.MapRoute(
            "Location",
            "{Controller}/{LocationId}",
            new { controller = "Home", action = "LocationPage", LocationId = "" }

并且不要忘记,通过这种方式,您不会将此参数作为Guid获取,那么您应该使用您提供的名称检索Guid值的逻辑。