MVC3 Json函数隐藏了特定的属性

时间:2011-03-08 02:08:07

标签: c# json asp.net-mvc-3

MVC3中有没有办法设置Json函数输出的属性?

即。我的模型上的属性有一个属性,告诉Json函数不输出它们。

2 个答案:

答案 0 :(得分:6)

看起来ScriptIgnoreAttribute会做你想要的。只需装饰你不想用它序列化的任何属性。

答案 1 :(得分:1)

使用匿名方法:

所以而不是

return Json(it);

DO

return Json(new {
  it.Name,
  CreatedAt = it.CreatedAt.ToString("D")
  // And so on...
});

这样您就可以向Web显式发布(映射)属性集,从而确保只能从JSON访问允许的属性。

如果您不想重复自己,可以使用JSON.NET序列化程序,您可以使用该序列化程序自定义对象的序列化方式。 (因此,您可以创建自定义HideAttribute并将其考虑在内)。 使用JSON.NET,您还需要编写Controller.Json方法替换(SmartJson左右)。但我想这不应该是一个问题。