パラメータを指定したURLルートに問題があります。私はこのリンクに続いた: ASP.NET MVC 5 culture in route and urlURLパラメータは認識され、クエリ文字列を含むurlの場合は値を持ちます
私はコントローラのブログの下にタグアクションを持っています。培養によれば、私は、ルート設定に2つのルートを作成した:
routes.MapRoute(
name: "TagWithCulture",
url: "{culture}/{controller}/{action}/{Name}/{page}/{pageNo}",
defaults: new { controller = "Blog", action = "Tag", Name = UrlParameter.Optional, pageNo = UrlParameter.Optional, page = UrlParameter.Optional },
constraints: new { culture = new CultureConstraint(defaultCulture: "ar", pattern: "[a-z]{2}") }
);
routes.MapRoute(
name: "Tag",
url: "{controller}/{action}/{Name}/{page}/{pageNo}",
defaults: new { controller = "Blog", action = "Tag", Name = UrlParameter.Optional, pageNo = UrlParameter.Optional, page = UrlParameter.Optional }
)
コントローラでアクションは2つのパラメータを受け入れるためのコード行の通りである:
public async Task<ActionResult> Tag(string Name, int? pageNo)
問題がある:私はURLを参照するときこのようなクエリ文字列:
localhost:1025/blog/tag?name=XYZ
とデバッグは、私が「名前」パラメータは、URLをブラウズし、ルートを適用することで、そうでない場合は、値を持っていることがわかります。
localhost:1025/blog/tag/XYZ
パラメータ 'name'がnullになります。
これは頭痛を引き起こしています。その解決策はありますか?
2つの 'MapRoute'呼び出しがデフォルトの' MapRoute'の上か下にありますか?これらを打つのではなく、最終的なパラメータとして 'id'を持つデフォルトルートにマップされているのだろうか? –
@ stephen.vakilどちらもデフォルトのMapRoute以下です。私はそれを上に置いて何が起こるのか:それはうまくいくが、 'Tag'アクションはあなたがlocalhostをブラウズするときに意味するホームページになる:1025/localhost /タグをパラメータなしで表示し、ブラウザのURLを変更することなく!!! –
は、常にデフォルトのrouteMapsをrouteMapsの先頭にする必要があるということですか?私は、デフォルトのルートを上に置き、まだTagアクションを実行し、クエリ文字列でのみパラメタを受け入れます。 –