1

我想組織我的解決方案,我看了一些區域,但似乎是:'ControllerName'的請求已找到以下匹配控制器...錯誤越來越有名。MVC地區:我應該如何映射我的路線?

我增加了一個Admin區和我的項目的文件夾結構看起來像這樣:

  • 地區
    • 聯繫
      • 控制器
      • 的HomeController
    • 個AdminAreaRegistration.cs
  • 控制器
    • 的HomeController

在我AdminAreaRegistration文件,我有這樣的:

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

而我這樣做的時候註冊我的路線:

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

我讀過here做到這一點對我Application_Start方法:

ControllerBuilder.Current.DefaultNamespaces.Add("X.Web.Controllers"); 

遺憾的是它並沒有解決這個錯誤。然後我閱讀here以在RegisterRoutes方法中添加默認(根)控制器的名稱空間。

我知道區域是關於路由,文件夾只是需要,但它們很有用。

我想知道如何在這種情況下將我的路線映射到特定的HomeController,其中一個在X.Web.Controllers,另一個在X.Web.Areas.Admin.Controllers。另外,我想知道是否可以使用@Html.RouteLink幫手而不是ActionLink生成鏈接,因爲在全部我迄今閱讀的示例中使用ActionLink方法生成的鏈接......這讓我懷疑。

我會感謝您提供的任何幫助/指導。謝謝。

回答

1

我偶然發現了一個類似的問題,由於找不到「乾淨的」解決方案,我最終重命名了一個HomeController - 應該有所幫助。

至於鏈接 - 是的,它可以生成它們,你需要將區域名稱添加到參數(routeValues)之一,所以:

@Html.ActionLink("link text", "ActionName", "ControllerName", new { area = "Admin" }) 
+0

克里斯:那就是,其實我的計劃灣重命名應該修復它。 – Esteban

相關問題