控制器将字典作为参数剥离的动作
我有一个Action在其属性中接收一个包含字典的类:
public ActionResult TestAction(TestClass testClass)
{
return View();
}
public class TestClass
{
public Dictionary<string, string> KeyValues { get; set; }
}
如果我使用以下JSON对我的操作发布帖子:
{
"KeyValues": {
"test.withDoT": "testWithDot"
}
}
我的字典中的关键字被剥离并没有任何价值。
尝试没有点的作品。 我如何使用MVC在Dictionary<string, string>
使用点进行发布?
我们盲目地尝试假设在深处有一个正则表达式解析器(它的机会很小),并且逃脱'点'。
经过一段时间后,我得出结论:dot不是标识符中的合法字符。 是的,我知道它是C#字典中的一个关键字,但在json部分(和JavaScript)中,它可能在标识符语法角色中。
所以我强烈建议替换客户端的.
(点)与_dot_
一样的转义序列,并将其替换回服务器端。 性能当然会受到影响。
将javascript更改为
var data = { 'KeyValues[0].Key': 'test.withDoT', 'KeyValues[0].Value': 'testWithDot' };
然后张贴使用
$.post('@Url.Action("TestAction")', data, function(data) { ...`
链接地址: http://www.djcxy.com/p/86883.html
上一篇: Controller's action with dictionary as parameter stripping to dot
下一篇: setConnectTimeout vs. setConnectionTimeToLive vs. setSocketTimeout()