【问题标题】:How to define a route with two parameters in this situation?在这种情况下如何定义带有两个参数的路由?
【发布时间】:2012-05-17 15:25:59
【问题描述】:

我正在将 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 }

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

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

有什么建议可以更好地处理这个问题吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor controller asp.net-mvc-routing


    【解决方案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" }
    

    确实,上一个有错别字(基于您发布的那个),因为控制器默认是States,而url是State。

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2017-12-30
      • 1970-01-01
      • 2011-06-19
      相关资源
      最近更新 更多