【问题标题】:Understanding MVC routing conventions了解 MVC 路由约定
【发布时间】:2015-04-28 06:48:38
【问题描述】:

我正在查看 MVC Route 的示例,它如下所示:

routes.MapRoute("Cuisine", "cuisine/{name}", new 
{ controller = "Cuisine", action = "Search", name = ""})

我只是想在这里剖析每个元素所代表的含义:

“美食/{name}”

这部分是否表示如果请求带有从单词美食开始的 URL,并且有第二个字符串参数并将其路由到该特定路由并将 URL 的第二部分视为参数名称?

{ controller = "Cuisine", action = "Search", name = ""})

如果没有传入参数,那么请使用空字符串作为默认值,如果为 name 参数传递了一些值,那么使用该值?

【问题讨论】:

  • 是的,它将在CuisineController 中调用public ActionResult Search(string name)。请注意,您通常使用name = UrlParameter.Optional 作为可选参数
  • 所以只是澄清一下。括号{} 中的内容是参数,括号中的内容是 URL 的“硬编码预期”部分。对吗?
  • 正确。 {..} 充当值的占位符。

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


【解决方案1】:

“美食/{name}”

。这部分是否说如果请求带有从单词美食开始的 URL,并且有第二个字符串参数并将其路由到该特定 Route 并将 URL 的第二部分视为参数名称?

是的,没错。

{ controller = "Cuisine", action = "Search", name = ""})

如果没有传入参数,那么请使用空字符串作为默认值,如果为 name 参数传递了一些值,那么使用该值?

是的,这也是正确的。但是,将可选参数指定为UrlParameter.Optional 通常更明智。

基本上,路由配置有 2 个(重要的)部分。

有一个匹配规范,它始终由 URL 参数组成,还可能包括约束、可选和必需值。必填值是您没有为路由键指定任何默认值并将其包含为路由段的值。如果路由不符合匹配条件,框架将尝试配置中的下一个路由,直到找到匹配(或不匹配)。将其视为 switch case 语句会很有帮助。

然后有一个路由值规范。这是默认值和可能覆盖或添加到它们的任何传入 URL 段的组合。请注意,URL 的常量部分不包含在路由值中。在您的示例中将“Cuisine”插入路线值的唯一原因是因为它被定义为默认路线值。

【讨论】:

    猜你喜欢
    • 2015-04-06
    • 2011-06-26
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多