Global.asax(MVC 3 Webプロジェクト)で次のルートが定義されています。
routes.MapRoute(
"BlogCategory", // Route name
"Blog/Category/{*category}", // URL with parameters
new { controller = "Blog", action = "Index", category = "" } // Parameter defaults
);
そして、私のアクションは次のようなカテゴリパラメータを受け入れます。
public ViewResult Index(string category, int page = 1)
{
PostListViewModel viewModel;
if (string.IsNullOrEmpty(category))
{
....show all cats else show only the one passed in
これは正常に機能し、カテゴリをコントローラに渡し、結果を適切にフィルタリングします。
私の問題は、私が作成したカテゴリの1つが、そのカテゴリ名に対して次のようになっている場合です。
プロジェクト/ラボ
(スペースとスラッシュに注意してください)
これにより、次のようなURLが作成されます。
/ Blog / Category / Projects%20 /%20Lab
リンクをたどると、次のエラーが発生します。
説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。
リクエストされたURL:/ Blog / Category / Projects / Lab
デバッグ時にインデックスアクションに到達することはありません。
私の質問は、これをどのように機能させることができるか、またはこれが発生しないようにカテゴリ名を作成するときに入力検証を行う必要があるかどうかです。