在运行时期间在ASP.NET Web API中控制[JsonIgnore]

时间:2012-11-03 12:39:00

标签: asp.net entity-framework json.net

众所周知,ASP.NET web api(ApiController)通过NewtonSoft.JSON自动提供JSON响应。

我的三级 1:MANY:1 EF数据模型以多种方式查询,并且将[JsonIgnore]属性应用于某些虚拟属性以便消除参考循环问题,它可以正常工作。 (我在this(link)回答中使用第三个解决方案)

但我的问题是,我有时需要使用json-ignored属性来查询模型。

有没有方法可以在运行时控制 [JsonIgnore] 属性? 或者,是否有任何方法可以在运行期间切换要在NewtonSoft.JSON中忽略的on-and-off属性?

1 个答案:

答案 0 :(得分:2)

我知道解决这个问题的两种方法:

  1. 您可以在模型中添加其他布尔属性(具有特定名称)。这个解决方案很简单,但需要更改您的模型。
  2. 你可以写自己的IContractResolver。这种方法更复杂,但更灵活。
  3. 此处描述的两种解决方案:'条件属性序列化'http://james.newtonking.com/json/help/index.html?topic=html/ConditionalProperties.htm