0

ASP.NETMVC3ルーティングは私を混乱させます。できることは全部読んだような気がしますが、それでも読めないこともあります。次のようなアクセス可能なURLを作成しようとしています

/authorized/home/children/{childID}

そのURLに、特定の子のコンテンツをロードするHTMLビューを表示したいと思います。私の見解は次のように定義されています。

/Views/Authorized/Home/Children/Child.cshtml

global.asax.csファイルに、次のルートを追加しました。

  routes.MapRoute(
    "Child", // Route name
    "{controller}/Home/Children/{action}/{id}",
    new { controller = "Authorized", action = "Child", id = UrlParameter.Optional }
  );

AuthorizedController.csには、次のものがあります。

public ActionResult Child(string id)
{
  return View("~/Views/Authorized/Home/Children/Child.cshtml");
}

/ authorized / home / childrenにアクセスすると、Child.cshtmlの内容が表示されます。ただし、/ authorized / home / children / 1にアクセスすると、404が返されます。

私は何が間違っているのですか?ありがとうございました

4

1 に答える 1

2

あなたが共有したルートはあなたが望んでいると言っているルートと一致しません。

あなたが欲しい:

/authorized/home/children/{childID}

しかし、あなたはルートが期待しています:

/Authorized/Home/Children/{action}/{id}

そこにある追加のアクションパラメータに注意してください。子供はあなたのコントローラーでのあなたの行動ですか、それとも子供ですか?お子様の場合は、ルートを次のように更新する必要があります。

 routes.MapRoute(
    "Child", // Route name
    "{controller}/Home/{action}/{id}",
    new { controller = "Authorized", action = "Children", id = UrlParameter.Optional }
  );

ただし、子の場合は、次のようにルートから{action}を削除する必要があります。

 routes.MapRoute(
    "Child", // Route name
    "{controller}/Home/Children/{id}",
    new { controller = "Authorized", action = "Child", id = UrlParameter.Optional }
  );

これにより、子アクションに向けて明示的なルートが作成されます。

于 2012-08-08T13:29:05.987 に答える