0

我正在将 ASP.NET MVC3 与 Razor 一起使用,并希望定义一个允许我接收此类 URL 的路由。注意我是 MVC3 的新手:

/State/Florida/Town/Fort_Lauderdale
/State/Texas/Town/Irvine
/State/Alabama/Town/Auburn

我希望现有的“States”控制器(StatesController 类)使用“Town”操作来处理它。我有这样的事情:

routes.MapRoute(
   "Towns",
   "{controller}/{state}/{action}/{town}",
   new { controller = "States", action = "Town", state= UrlParameter.Optional, town = UrlParameter.Optional }

显然,州和城镇参数都不是可选的,我该怎么做?我不认为上面的路线是正确的,有没有办法表明该参数不是可选的?

这里的另一种情况是,虽然上面我假装在控制器 Town(字符串城镇)中通过单个操作来处​​理城镇,但我仍然需要能够使用 Razor 解析各个城镇文件。我最初想使用 Town() 控制器方法来使用 town 参数来提供城镇的 HTML 文件,但事实证明,我还希望能够获得有关城镇描述的动态数据。这是否意味着我最好的解决方案是创建一个专用的城镇控制器并为每个城镇创建一个操作方法?

有什么建议可以更好地处理吗?

4

1 回答 1

1

只需删除 UrlParameter.Optional

routes.MapRoute(
    "Towns",
    "{controller}/{state}/{action}/{town}",
    new { controller = "States", action = "Town" }

我只想找一些更明确的东西,比如:

routes.MapRoute(
    "Towns",
    "State/{state}/Town/{town}",
    new { controller = "States", action = "Town" }

确实,上一个中有一个错字(基于您发布的那个),因为控制器默认是状态,而 URL 是状态。

于 2012-05-17T15:35:43.947 回答