MVC routes.MapRoute name属性

ror*_*ory 5 asp.net-mvc asp.net-mvc-5

我是MVC的新手,所以请关注我,因为我只在MS Tutorial的第二页(参见最后一个代码示例).对于HelloWorldController,添加了以下MapRoute:

routes.MapRoute(
                name: "Hello",
                url: "{controller}/{action}/{name}/{id}");
Run Code Online (Sandbox Code Playgroud)

我只是想知道,它是纯粹的模式匹配工作和名称"你好"只是为了我自己的参考?如果是这样,是不是应该遵循命名约定,说MapRoute应该被称为HelloWorldWelcome,其中welcome是HelloWorldController.cs中的一个方法(见上面的链接).还是我迂腐?

Tim*_*lds 5

UrlHelper类也使用路由名称。例如:

var url = Url.Route("Hello", new
{
    controller = "SomeController",
    action = "SomeAction",
    name = "charlie",
    id = 123
});
Run Code Online (Sandbox Code Playgroud)

这将生成一个匹配的 URL。

当您使用属性路由时,此功能更有用。例如,如果在某个控制器上您有一个操作:

[RoutePrefix("api/phonebook")]
public class PhonebookController
{
    [HttpGet("contact/{id}", Name = "GetContact")]
    public Contact GetContact(int id)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在其他代码中,您可以Url.Route("GetContact", new { id = 7 })用来生成 URL /api/phonebook/contact/7