1

MVC エリアに関する問題について、誰かが私を正してくれることを願っています。この質問が以前に尋ねられたことは知っていますが、コードにエラーが表示されません。継承したイントラネット アプリで、既存の管理領域コントローラーと対応するビューに別の ActionResult メソッドを作成しました。

ActionResult AllCurrentAttributes()

パラメーターを必要とせず、VS 2012 IDE でアプリを操作すると機能します。ただし、デプロイされたアプリは次のエラーをスローします: HTTP 404. 探しているリソース (またはその依存関係の 1 つ) が削除されたか、名前が変更されたか、一時的に利用できない可能性があります。同じコントローラー内の他の ActionResult メソッドは完全に機能します。

他のすべての作業ルートは、AdministrationAreaRegistration.cs に登録されています。

public override void RegisterArea(AreaRegistrationContext context)
{
  context.MapRoute(
    "RA",
    "Administration/RA/{raId}",
    new { area = "Administration", controller = "RA", action = "View" },
    new { riskAssessmentId = @"\d+" },
    new[] { "LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "RA Work",
    "Administration/ RA /Work/{raId}",
    new { area = "Administration", controller = " RA ", action = "Work" },
    new { riskAssessmentId = @"\d+" },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "All Current Attributes",
    "Administration/ RA /AllCurrentAttributes/",
    new { area = "Administration", controller = " RA ", action = "AllCurrentAttributes" },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );

  context.MapRoute(
    "Administration Default",
    "Administration/{controller}/{action}/{id}",
    new { area = "Administration", controller = "Home", action = "Index", id = UrlParameter.Optional },
    new[] { " LargeApp.UI.Web.Areas.Administration.Controllers" }
    );
}

管理領域にあるホーム コントローラー用に作成されたビューである Index.cshtml の ActionLink は、次のようになります。

@Html.ActionLink("All Current Attributes", "AllCurrentAttributes", "RA")

ビューは、管理領域内の RA フォルダーにあり、AllCurrentAttributes.cshtml という名前が付けられています。同じ RA コントローラーを参照する Index.cshtml 内の他の ActionLinks は完全に機能します。

@Html.ActionLink("Work Rules", "WorkIndex", "RA ")
@Html.Action("List", "RA ") 

Global.asax では、RegisterRoutes(RouteCollection routes) が呼び出される前に、AreaRegistration.RegisterAllAreas() が Application_Start で呼び出されます。RegisterRoutes では、デフォルトのルート コードは次のようになります。

routes.MapRoute(
    "Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    new[] { "LargeApp.UI.Web.Controllers" } 
);

404エラーを解決する方法を知っている人はいますか?

ありがとう!

4

2 に答える 2

0

デプロイした IIS に「Areas」フォルダが作成されているかどうかを確認できますか?

于 2013-07-19T14:42:37.110 に答える
0

@Html.ActionLink が機能しない理由がわかりません。しかし、物事を動かし続けるために、別の種類のリンクを使用しました。

@Html.RouteLink("All Current Attributes", "AllCurrentAttributes", "RA")

この 2 種類のリンクの違いは、次の StackOverflow URL で Chad Moran によって簡潔に説明されています。

ASP.NET MVC の RouteLink と ActionLink の違いは何ですか?

@RoutLink を使用すると、ルートのパターン マッチに頼るのではなく、ルートを指定できます。

于 2013-08-26T18:58:52.510 に答える