了解 MVC 路由约定

Understanding MVC routing conventions

我正在查看 MVC 路由的示例,如下所示:

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

我只是想剖析每个元素在这里代表什么:

"cuisine/{name}"

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

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

如果没有向参数传递任何内容,那么请使用空字符串作为默认值,如果为名称参数传递了一些值,那么使用该值?

"cuisine/{name}"

. Does this part say that if a request comes with URL starting from word cuisine and there is a second string paramter and route it to this particular Route and consider second part of URL as parameter name?

是的,没错。

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

If nothing is passed into the parameter then please use empty string as default and if some value is passed for name parameter then use that value?

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

通常更为明智

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

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

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