asp.net-mvc-3 - エリア内のASP.NET MVC3ネストされたリソース

原文 asp.net-mvc-3 asp.net-mvc-routing

私はRailsの出身ですが、MicrosoftのMVCフレームワークに頭を抱えるのに問題があります。

今日はルーティングです。 Railsは、.NET MVC3のAreaに相当する名前空間(Adminなど)を提供します。 Railsでは、たとえば/ posts / 1 / comments / 1 / editを提供するルート内にネストされたリソースを定義することもでき、アクションでは基本的にparams [:post_id]とparams [:id]を取得します。

ASP.NET MVC3でも同様のものが必要ですが、どうすればよいかわかりません。これをグーグルで行うと、これを達成するための少なくとも30の異なる方法が得られ、それらのうちの1つは領域に言及しません。

私はここで何かを追加/変更する必要があるように感じます:

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


しかし、どこにあるかわからない。助言がありますか?
答え
私はあなたが正しいファイル(あなたのAreaRegistration.csファイル)にいると思います。ルートが提供するデフォルトの「catch all」タイプのルートを使用するよりも、ルートをもう少し明示することを好みます。だからこれは私がこれをどのように処理するかの例です:

RegisterAreaメソッドで、既存のルートの前にこのようなものを追加する(または既存のルートをすべて削除する)

context.MapRoute(
    "Edit_Comment",
    "posts/{postId}/comments/{commentId}/edit",
    new { controller = "Comment", action = "Edit" }
);


次に、CommentController.csで次のアクションを実行します。

public ActionResult Edit(int postId, int commentId)
{
    // Do your edit logic then return an ActionResult
}
関連記事

c# - ASP.NET MVCモデルを再利用可能なアセンブリとしてカプセル化する

asp.net-mvc-3 - WebファームフレームワークとMVC 3:アクションメソッドにHttpsを要求する方法

c# - 応答ステータスコードの設定時にFormsAuthentication.SignOutが失敗する

asp.net-mvc-3 - MVC3クライアント検証:ページの再読み込みを防ぐ方法は?

asp.net-mvc - 拡張可能なコントローラの追加ダイアログ?

c# - MVC 3でbyte []からファイルを返すと正しく機能しない

javascript - MVC3のJavaScriptを介してViewModelプロパティ値を変更する

c# - 一般的なロギングは初めてですが、MVC3アプリケーションに何をログインすればよいですか?

c# - ファイルダウンロードリンクの作成MVC3 Razor View with Model

asp.net-mvc-3 - カスタムWebViewPageタイプでのNinjectの使用