ASP.NETルーティングでクエリ文字列をどのように使用しますか?
-
03-07-2019 - |
質問
新しいASP.NETルーティングは、単純なパススタイルのURLに最適ですが、次のようなURLを使用する場合は
http://example.com/items/search .xhtml?term = Text + to + find& page = 2
catch allパラメーターを検証で使用する必要がありますか?
解決
ルートにリストされていないすべてのビューデータ項目は自動的にクエリ文字列にマップされるため、「quotes / search.xhtml」をマップすると、アクションへ:
Search(string term, int page)
次に、探している結果が表示されます。
他のヒント
クエリ文字列パラメーターとルートを一致させることもできます。パラメーターを追加するために必要なものをすべてキャプチャする場合は、次のようにします。
{* contentUrl}
残りのURLをその変数に設定します。
また、エンコードされたURLをルートパラメーターとしてルートに渡すのに問題がありました。
URLでURLエンコードされた文字を使用することはできませんが、クエリ文字列では使用できます。
したがって、ルートにもクエリ文字列要素を含める必要がありました。
ルートがあるとしましょう:
MapPageRoute("myroute", "myroute/{x}", "~/routehander.aspx")
しかし、私はそれを次の形式で欲しい:
http://mywebsite.com/myroute/{x}?url=myurl
これを行うことができます:
Dim x as integer = 12
Dim rvd As New Routing.RouteValueDictionary
rvd.Add("x", x)
rvd.Add("url", Server.UrlEncode("/default.aspx"))
HttpContext.Current.ApplicationInstance.Response.RedirectToRoutePermanent("myroute", rvd)
これにより、次のURLにリダイレクトされます。
http://mywebsite.com/myroute/12?url=%252fdefault.aspx
引き続き Request.QueryString [" some_value"];
所属していません StackOverflow