看了一段时间,觉得自己很傻,想多看几眼。。
我需要生成一个完整的 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");
我已经开始整理一个返回 a 的类,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 是正确的。
我只是不明白为什么这适用于匿名对象,但是包裹在同一对象中的同一对象包裹在 aRouteValueDictionary
中使助手吓坏了。