2013-01-25 58 views
0

我有一個包含兩個區域的項目。這兩個領域允許不共享任何控制者或觀點的不同成員類型(例如學生和老師)。但是他們都共享聯繫人和支持頁面的根控制器等。MVC3使用命名空間將區域路由到根目錄

目前我使用命名空間在每個區域內進行路由。

我想要做這樣的事情,但在命名空間優先所以他們不會有衝突的控制器:

context.MapRoute(
    "Student_Default", 
    "{controller}/{action}/{id}", 
    new { area = "Student", controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new { RoleConstraint = new AuthenticationConstraint() }, 
    new[] { "Test.Web.Areas.Student.Controllers", "Test.Web.Controllers" } 
); 

或者我試圖用「UseNamespaceFallback」,但會導致在各個領域的搜索,我不要不想要。

我還沒有嘗試過的其他東西只是在用戶登錄時註冊區域。這是一個可接受的方法嗎?

我也可以映射每個頁面,但可能會有很多,每個頁面都會很麻煩。

所以問題是我怎樣才能使兩個區域可用的根控制器沒有區域可用於對方?如果需要更多信息,請告知我,我很樂意提供更多關於我想要做的事情。

回答

0

雖然在週末我想到了這個,但我決定使用「UseNamespaceFallback」。我還實施了用戶角色來管理每個用戶有權訪問的區域。我認爲這是一個更好的方法,因爲我已經閱讀了一個建議,即從不使用名稱空間作爲身份驗證方法。