で期待どおりASP.NET MVC 3
public ActionResult Index(string category) { ... }
...私は、オプションのカテゴリのパラメータを取りindexアクションでの掲載コントローラーを持って働いていないカスタムのルートでHtml.ActionLinkを呼び出すと、私は標準のデフォルトを持っていますGlobal.asaxのルート...
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
私が呼び出す場合...
ビュー内から@Html.ActionLink("Show All Listings", "Index", "Listings")
...(でもVIE w:指定されたカテゴリの同じアクション)私は "/ Listings"へのリンクを取得します。
私は...
@Html.ActionLink("Show Listings for Category A", "Index", "Listings", new { category = "CategoryA" }, null)
を呼び出す場合...私は "/掲載?カテゴリ= CategoryA" へのリンクを取得します。これまでのすべての良い。
それでは、私が達成したかったことは、カテゴリを指定した場合のためのカスタムルートを作成することです。これを行うために、私は次のようにちょうど上記のルートの前にGlobal.asaxのためにカスタムルートを追加しました:私は...
@Html.ActionLink("Show Listings for Category A", "Index", "Listings", new { category = "CategoryA" }, null)
を呼び出す場合
routes.MapRoute(
"ListingCategories",
"listings/category/{category}",
new { controller = "Listings", action = "Index" }
);
は今...私は "素敵なリンクを取得します/ Listings/Category/CategoryA "
しかし、ここに問題があります。私は、カテゴリ=「CategoryA」と上記のアクション用のビューから... ...
@Html.ActionLink("Show All Listings", "Index", "Listings")
を呼び出した場合、生成されたリンクは、「/掲載/カテゴリ/ CategoryAは、」/」だけではなく、のですリスト "。しかし、他のビューから同じ呼び出しを行うと、リンクは "/ Listings"としてうまく生成されます。
」=私は...呼び出し
@Html.ActionLink("Show All Listings", "Index", "Listings", new { category = "" }, null)
を試してみた...とカテゴリを持っていたアクション用のビューから呼び出されたときに、それはまだ「/掲載/カテゴリ/ CategoryA」としてリンクを生成し、カテゴリA "とする。しかし、カテゴリを空でない文字列に設定すると、正しいカテゴリ(指定したもの)にリンクが生成されます。
これが期待どおりの動作ですか? category
があなたの前のルートがそのルートと一致しないActionLink
ので、必要なカテゴリを作る代わりに、デフォルトのような別のルートと一致する
routes.MapRoute(
"ListingCategories",
"listings/category/{category}",
new { controller = "Listings", action = "Index", category = UrlParameter.Optional }
);
オプションであるように、
はい、これに加えて、カテゴリが/ listing urlだけに指定されていない場合のルートを追加しました – Michael