しばらくこれを見ていて、自分が馬鹿だと感じているだけで、もっと注目したい..
完全な URL を生成する必要があります (例: http://www.domain.com/controller/action?a=1&b=2
)。通常はUrl.Action
、プロトコルを指定して問題なくこれを行うために使用します。
var url = Url.Action("Action", "Controller", new { a = 1, b = 2 }, "http");
RouteValueDictionary
これらの匿名オブジェクトを非表示にするために、 を返すクラスをまとめ始めました。ただし、ヘルパーと一緒に動作させることはできません。
var x = Url.Action("Action", "Controller", new RouteValueDictionary(new { a = 1, b = 2 }), "http");
// "http://127.0.0.1/Controller/Action?Count=2&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D",
var y = Url.Action("Action", "Controller", new { a = 1, b = 2 }, "http");
// "http://127.0.0.1/Controller/Action?a=1&b=2"
facepalmにつながるポインタは大歓迎です:)
アップデート:
X
上記のサンプルでは、RouteValueDictionary がコードの別の場所で作成されているため、' ' 変数を正しく動作させる必要があることを明確にするのがおそらく最善です。RouteValueDictionary が正しいと仮定します。
これが匿名オブジェクトで機能する理由がわかりませんが、同じオブジェクトにラップされた同じオブジェクトが a でラップされているRouteValueDictionary
と、ヘルパーがびっくりします。