2014-09-05 74 views
5

我是MVC的全新品牌,请耐心等待,因为我只是在MS Tutorial的第二页(请参阅最后一段代码示例)。对于HelloWorldController如下图路线增加:MVC routes.MapRoute name属性

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

我只是想知道,是不是纯粹的模式匹配,做的工作,并命名为“你好”,只是为我自己的参考? 如果那么,是否没有命名约定应该遵循,称MapRoute应该被称为HelloWorldWelcome,其中welcome是HelloWorldController.cs中的一个方法(参见上面的链接)。还是我迂腐?

回答

4

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

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

这将生成一个匹配的URL。

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

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

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

1

请参阅细节上ASP.NET MVC Routing Overview

名称属性是callign从您的视图或控制器的路由与路由名称。

ActionLink的您可以使用routename:

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

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

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