MVC routes.MapRoute name属性

时间:2014-09-05 19:49:08

标签: asp.net-mvc asp.net-mvc-5

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

routes.MapRoute(
                name: "Hello",
                url: "{controller}/{action}/{name}/{id}");

我只是想知道,它是纯粹的模式匹配才能完成工作而名称“Hello”仅供我自己参考? 如果那么,是不是应该遵循命名约定,说MapRoute应该被称为HelloWorldWelcome,其中welcome是HelloWorldController.cs中的一个方法(见上面的链接)。或者我是迂腐吗?

4 个答案:

答案 0 :(得分:4)

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

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

这将生成匹配的网址。

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

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

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

答案 1 :(得分:1)

请参阅ASP.NET MVC Routing Overview

的详细信息

名称属性用于从您的视图或带有路径名称的控制器中调用路由。

ActionLink ,您可以使用路由:

 Html.RouteLink("link_text", "route_name", route_parameters)

答案 2 :(得分:0)

问题似乎没有得到如此明确的回答(" Hello"路由如何被" HelloWorld"控制器选择?),但作为Asp.Net MV5 begginer,我根据路由器url属性和URL参数之间的匹配,可以看到路由被默认选择

答案 3 :(得分:0)

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "ImageScan", action = "ScanImage", id = UrlParameter.Optional },
                        namespaces: new[] { "WebApplication3.Controllers" }
        );

我发现错误: 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的网址:/Views/ImageScan/ScanImage.cshtml