gpt4 book ai didi

asp.net-mvc - Url.Action 与 RouteValueDictionary 与协议(protocol)

转载 作者:行者123 更新时间:2023-12-03 07:54:32 25 4
gpt4 key购买 nike

看了一段时间,觉得自己很傻,想多看几眼。。

我需要生成一个完整的 URL,(例如 http://www.domain.com/controller/action?a=1&b=2 ),一般我只使用 Url.Action 通过指定协议(protocol)来毫无问题地做到这一点:

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 是正确的。

我只是不明白为什么这适用于匿名对象,但是包裹在同一对象中的同一对象包裹在 RouteValueDictionary 中。让助手吓坏了。

最佳答案

有趣的是,您的具体示例似乎与将“对象”作为属性而不是 RouteValueDictionary 的方法签名相匹配。因此,它只是 ToString() 输出类型名,而不是正确序列化 RouteValueDictionary

 var x = Url.Action("Index", "Home", new RouteValueDictionary(new { a = 1, b = 2 }), "http", string.Empty);

备注 "string.Empty"在末尾。

这足以强制代码使用不同的重载,它接受 RouteValueDictionary 并因此正确序列化。
// http://localhost:55110/?a=1&b=2

关于asp.net-mvc - Url.Action 与 RouteValueDictionary 与协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15433161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com