新しい ASP.NET ルーティングは、単純なパス スタイルの URL には最適ですが、次のような URL を使用する場合:
http://example.com/items/search.xhtml?term=Text+to+find&page=2
検証ですべてのパラメーターをキャッチする必要がありますか?
新しい ASP.NET ルーティングは、単純なパス スタイルの URL には最適ですが、次のような URL を使用する場合:
http://example.com/items/search.xhtml?term=Text+to+find&page=2
検証ですべてのパラメーターをキャッチする必要がありますか?
クエリ文字列パラメーターをルートと一致させることもできます。必要なすべてをキャプチャしたい場合は、次のようにパラメーターを追加する必要があります。
{*contentUrl}
これにより、残りの URL がその変数に入力されます。
ルートにリストされていないビュー データ アイテムはクエリ文字列に自動的にマップされるため、"items/search.xhtml" をアクションにマップすると、次のようになります。
Search(string term, int page)
次に、探している結果が得られるはずです。
また、エンコードされた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"];