.net mvc 4模型绑定特殊字符

时间:2016-08-04 16:17:31

标签: asp.net-mvc

如何为json对象创建模型类,如:

 { "model" : { "@foo": "bar", "#baz": "fu" }}

如果我想将json model及其变量名中的特殊字符@#传递给我的控制器,如何编写模型或者更确切地声明类变量:

$http.post('@Url.Action("myController","test")', model, { headers: { 'Content-Type': 'application/json; charset=utf-8' } })

 public class MyModel 
    {
//       public string @foo { get; set; }
 //      public #bar { get; set; }
    }

 public ActionResult myController(MyModel model) {

            return View();
        }

有两个简单的解决方案。

  1. 迭代json对象并更改变量名称。
  2. 将json发布为字符串JSON.stringify(data)并将其序列化为我自己的
  3. 如下所述:

    public ActionResult myController(string model)
    {
        var ser = new System.Web.Script.Serialization.JavascriptSerializer();
        Dictionary<string, string> dictionary = ser.Deserialize<Dictionary<string, string>>(model);
    
        // Do something with the dictionary
    }
    

1 个答案:

答案 0 :(得分:1)

如果您使用Json.NET,则可以使用[JsonProperty]属性来装饰属性名称:

[JsonProperty(PropertyName = "@foor")]
public string Foo { get; set; }

[JsonProperty(PropertyName = "#bar")]
 public Bar { get; set; }