2012-08-06 46 views
0

我剛剛創建了一個新區域來組織我的代碼。 但是目前我實際上很難將它從我的「基礎」或「根」索引頁面鏈接到我的新區域頁面。ASP.NET MVC3鏈接區域「無法找到資源」

@Html.ActionLink("Tube Record Form", "BearingAssemblyForm", "_HiCT", new { area = "HICT" }, null) 

public class HICTAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get 
     { 
      return "HICT"; 
     } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "HICT_default", 
      "HICT/{controller}/{action}/{id}", 
      new {controller = "_HiCT", action = "BearingAssemblyForm", id = UrlParameter.Optional } 
     ); 
    } 
} 

的資源不能被發現。 而且似乎與其相關聯的錯誤

請求的URL:/ HICT/HiCT/BearingAssemblyForm
控制器:HiCT, 查看/動作:BearingAssemblyForm,面積:HICT。

我會怎麼樣?

非常感謝。

+0

請看看這個 http://stackoverflow.com/questions/6554561/troubleshooting-the-resource-cannot-be-found-error – 2012-08-06 17:07:27

+0

的http://計算器。com/questions/6554561 /疑難解答資源不能找到錯誤 – 2012-08-06 17:08:51

回答

1

試試這個:

@Html.ActionLink("LinkText", 
     "ActionName", 
     "ControllerName", 
     new { area = "HICT" }, null) 

我覺得你沒有使用正確的@Html.ActionLink方法重載。

首先關閉所有,看看您所在地區正確註冊:

public class Routes : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get 
     { 
      return "HICT"; 
     } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "HICT_default", 
      "HICT/{controller}/{action}/{id}", 
      new { controller = "_HiCT", action = "BearingAssemblyForm", id = UrlParameter.Optional } 
    ); 
} 

確保你調用RegisterAllAreasGlobal.asax.cs文件中:

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 

    ... 
} 
+0

好吧,我將它切換到@ Html.ActionLink(「Tube Record Form」,「BearingAssemblyForm」,「HiCT」,new {area =「HICT」},null)。我仍然遇到同樣的問題。 – AustinT 2012-08-06 17:09:30

+0

所以你有一個同名的控制器...改變你的控制器名稱,然後再試一次。 – 2012-08-06 17:10:12

+0

你是什麼意思我的控制器是同一個名字?與我的區域同名?謝謝! – AustinT 2012-08-06 17:16:05

0

/碩士/ BearingAssemblyForm

通常,法師是控制器和第二部分是行動,這樣看來你的控制器的名字比你的路線不同。

+0

是的,我認爲這是問題,有什麼辦法我可以切換控制器到HiCT代替 – AustinT 2012-08-06 17:10:16

+0

你可以嘗試創建一個自定義路由,雖然它可能會變得棘手你的情況。 – 2012-08-06 17:12:12

0

你打電話:

AreaRegistration.RegisterAllAreas(); 

on Application_Start in your Global.asax?你用什麼服務器來開發卡西尼,IISExpress,IIS?

查看更多詳細信息後進行編輯。

在你的管理區註冊文件,如果你有這樣的代碼

context.MapRoute(
    "Admin_default", 
    "Admin/{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new string[] { "CoolProject.Web.Areas.Admin.Contollers" } 
); 

我認爲在CoolProject.Web.Areas.Admin.Contollers一個錯字,它應該是CoolProject.Web.Areas.Admin.Controllers

+0

我不太清楚你的意思,但我打電話給AreaRegistration.RegisterAllAreas();在我的Globa.asax中,它是否與我的HICTAreaRegistration代碼有關? – AustinT 2012-08-06 17:14:17

0

它是一個詭計,但這應該工作。

@Html.ActionLink("Tube Record Form", "action", "Area/controller") 
+0

我也試過這個,我也遇到了同樣的問題 – AustinT 2012-08-06 17:14:59