控制器的操作与字典作为参数剥离到点

Ale*_*pin 7 .net c# asp.net-mvc

我有一个Action接收一个在其属性中包含字典的类:

public ActionResult TestAction(TestClass testClass)
{
    return View();
}

public class TestClass
{
    public Dictionary<string, string> KeyValues { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我使用以下JSON对我的操作发帖:

{
  "KeyValues": {
    "test.withDoT": "testWithDot"
  }
}
Run Code Online (Sandbox Code Playgroud)

我的字典中的键被剥离到点并且没有任何值.

在此输入图像描述

尝试没有点工作.如何在Dictionary<string, string>带MVC 的点上发帖?

g.p*_*dou 3

我们盲目地尝试假设在深处的某个地方有一个正则表达式解析器(好吧,机会很小)并转义“点”。

经过思考一段时间,我得出结论:点不是标识符中的合法字符。是的,我知道它是C# 字典中的键,但在 json 部分(和 javascript)中,它可能是标识符语法角色。

因此,我强烈建议将客户端的.(点)替换为转义序列_dot_,然后在服务器端将其替换回去。性能当然会受到影响。