2014-09-05 41 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