0
私はルートにパラメータを渡そうとしていますが、苦労しています。私は私のGlobal.asaxファイルに次きASP.NET MVC 3.0のルートとパッシングパラメータ
public ActionResult Detail(int id)
{
return View();
}
:私は、URLに「記事/ 230」と入力すると、以下のように、それは詳細アクションを呼び出す必要があることを望ん
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Articles", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"ArticleDetails", // Route name
"Articles/{id}", // URL with parameters
new { controller = "Articles", action="Detail", id = 0 } // Parameter defaults
);
}
そして、
@foreach(var article in Model)
{
<div class="article_title">
@Html.ActionLink(@article.Title, "Detail", "Articles", new { id = @article.Id})
</div>
<div>
@article.Abstract
</div>
ありがとうダーリン!それはうまくいったのですが、順序が重要で、元のコードではなぜ順不同であったにもかかわらず経路が一致しませんでしたか? – johndoe
ルートエンジンは遅延マッチングに基づいて動作します。デフォルトルートは一致するものがないので(すべての値にデフォルト値があります)、それは他のものよりも前に一致します。 –
経路情報を評価するための*何らかの順序が必要であるため、順序が重要です。 :)記事/ 123が存在しなかった「記事」コントローラの「123」アクションを呼び出そうとしたため、元の注文は機能しませんでした。最初の(デフォルトの)ルートと一致します。 – Sapph