3

我正在使用Asp.Net MVC 2 - RC w/Areas。當使用helper時指定命名空間的語法。

由於在兩個不同區域中具有相同的控制器名稱,我收到了一個模糊的控制器名稱異常。

我讀過菲爾哈克的帖子Ambiguous Controller Names With Areas

嘗試使用UrlHelper(我有一個擴展類),當我想不通的語法。

例如

public static string MyAreaHome(this UrlHelper helper) { 
    return helper.RouteUrl("ARoute", 
     new { controller = "Home", action = "Index" }); 
} 

我已經嘗試了添加命名空間=「mynamespace」的顯而易見的,但沒有奏效,它只是將名稱空間添加到URL。謝謝你的幫助。

回答

1

也許你可以通過使用兩條獨立的路線來解決它。我想這也是什麼菲爾正試圖在「Ambiguous Controller Names With Areas」後

routes.MapRoute(
    "ARoute", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = "" } 
); 

routes.MapRoute(
    "BRoute", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = "" } 
); 

那麼你可以參考這兩種路線是這樣的路線註冊例子來說明:

public static string MyAreaHome(this UrlHelper helper) { 
    return helper.RouteUrl("ARoute", 
     new { controller = "Home", action = "Index" }); 
} 

public static string MyOtherAreaHome(this UrlHelper helper) { 
    return helper.RouteUrl("BRoute", 
     new { controller = "Home", action = "Index" }); 
} 
+0

這有助於解決問題。在「一般」路線上,我指定了命名空間。在註冊路由的區域路由中,我指定了區域名稱空間並解決了問題。 – 2010-03-25 20:01:21

1

你嘗試

helper.RouteUrl("ARoute", 
    new { controller = "Home", action = "Index", Area = "YourArea" }); 
+0

是的,那也行不通。它將該區域作爲查詢字符串添加到網址中 – 2010-03-25 17:51:46

相關問題