我有一个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>
中的点进行帖子?
答案 0 :(得分:3)
我们做了一个盲目的尝试,假设在深处某处有一个正则表达式解析器(它的机会极小)并且可以逃脱'点'。
经过一段时间的思考,我得出结论:dot不是标识符中的合法字符。是的我知道它是C#字典中的键,但在json部分(和javascript)中它可能是标识符语法角色。
所以我强烈建议用.
之类的转义序列替换客户端_dot_
(点),并在服务器端替换它。当然,表现会受到影响。
答案 1 :(得分:1)
将javascript更改为
var data = { 'KeyValues[0].Key': 'test.withDoT', 'KeyValues[0].Value': 'testWithDot' };
然后使用
发布$.post('@Url.Action("TestAction")', data, function(data) { ...`