2014-04-25 63 views
0

我有一個項目有2個領域。它確實有效,但我是這個新手,我想明白爲什麼。區域路由,爲什麼需要區域名稱?

我呼籲LogonArea

 context.MapRoute(
      "LogonArea_default", 
      "LogonArea/{controller}/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional } 

一個片區爲什麼 'LogonArea /' 部分需要?它不應該能夠找到沒有它的控制器?

當我試圖消除它,我仍然可以達到與區域控制器,但奇怪的是我不能達到,而頁面上的其他地區。

如果這是真的需要我怎麼能掩蓋它因此該地區是不是在URL可見?

感謝

+0

請參閱我的關於指定區域以便「離開」該區域的更新。 – Dismissile

+0

工作。我也有「面積=」在ActionLink的位,但我覺得我在做什麼被刪除,當我刪除從路由{}面積段。 非常感謝您的幫助:-) – tony

回答

1

如果從區域航線登記刪除/LoginArea/,它就能找到你的控制器(只要你沒有任何衝突的控制器的名字,如HomeController的主要區塊和HomeController的中該地區)。

這主要有爲了您的方便。如果您有管理員區域,則可以通過/ Admin/{controller}訪問您網站中的所有內容。這主要只是一個組織方面的事情。

public class AdminAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get 
     { 
      return "Admin"; 
     } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Admin_default", 
      "{controller}/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

我創建了這個項目稱爲FooController單個控制器,我能去到url /Foo而不需要當您創建一個鏈接到控制器外去/Admin/Foo

到達它您需要指定它所在的區域(或指定沒有區域):

@Html.ActionLink("Go Home", "Index", "Home", new { area = "" }, null)