MVC路由:它是如何发生的

时间:2014-03-05 05:58:17

标签: asp.net-mvc

我有一条如下路线

 routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

但我想知道何时输入mysite.com/Team/Details,

它转到Team控制器的详细信息操作。

它是如何开心的?我没有为Team

添加任何路线

3 个答案:

答案 0 :(得分:2)

该路线表示它是“默认”路线,由MVC项目模板添加。

它使用模板格式,其中关键字是大括号。

{controller} =导航到的控制器。 {action} =正在访问的操作方法 {id} =一个id参数,您的网址可能存在也可能不存在(因此id = UrlParameter.Optional

因此,它会看到网址Team/Details并且知道按照惯例,Team是您的控制者,Details是您的行动。

答案 1 :(得分:1)

it {controller} / {action} / {id}是实现它的原因,所以它将每个url解释为site / controller / action / id

这一行         new {controller =“Home”,action =“Index”,id = UrlParameter.Optional}

表示没有指定的控制器变为home,没有指定的操作变为索引,也没有指定的id =“”。

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

答案 2 :(得分:0)

该代码中的注释回答了您的问题,特别是“参数默认值”的注释。这些只是默认值,重要的部分是“{controller} / {action} / {id}”部分。基本上,如果您只是在没有明确输入mysite.com/Home/Index的情况下访问mysite.com,该规则将填充控制器的“Home”和操作的“Index”。否则,如果您指定mysite.com/Team/Details,则会为控制器填写“Team”,为操作填写“Details”。