如何为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();
}
有两个简单的解决方案。
JSON.stringify(data)
并将其序列化为我自己的如下所述:
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
}
答案 0 :(得分:1)
如果您使用Json.NET,则可以使用[JsonProperty]
属性来装饰属性名称:
[JsonProperty(PropertyName = "@foor")]
public string Foo { get; set; }
[JsonProperty(PropertyName = "#bar")]
public Bar { get; set; }