2011-12-26 61 views
0

我有一个网站,网址看起来像这样;无法获得MVC路由工作

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

我想它看起来就像是;

Home/My Restaurant 

我试过映射这样的路线;

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

,但似乎无法得到URL做任何改动。

+0

路由不会更改URL;它添加了URL。你想要重定向吗? – SLaks 2011-12-26 03:37:29

+0

不,我想要的网址反映了一个自定义路径 – griegs 2011-12-26 03:38:47

+0

那么当你去'家/我的餐厅'会发生什么?有什么确切的问题? – SLaks 2011-12-26 03:39:44

回答

0

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

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

通过这种方式,您可以获得不错的网址,但操作无需执行查找。

0

如果您收到一个名为您Action,那么你需要改变你的路线LocationId参数:

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

而且不要忘了,这样你就不会得到这个参数设置为Guid那么你应该使您的逻辑检索提供的名称Guid值。