尝试在序列化期间排除模型中的属性。
我使用以下语法:
JsConfig<MyTestClass>.ExcludePropertyNames = new[] { "ShortDescription" };
之后我有以下内容:
return (from o in __someProvider.GetAll() select (new
{
o.Name,
o.ShortDescription
o.InsertDate
}).TranslateTo<MyTestClass>()).ToList()
但是,一旦从方法返回结果,它仍然在Json中包含“ShortDescription”字段。我做错了吗?
答案 0 :(得分:7)
JsConfig<T>.ExcludePropertyNames
似乎只对TypeConfig<T>
ExcludePropertyNames
static constructor中的每种类型进行了一次检查。因此,如果您在服务类中配置MyTestClass
,就在返回响应之前,可能为时已晚 - 可能已经为JsConfig<T>
设置并缓存了TypeConfig属性。我能够重现这一点。
更可靠的替代方法是将您的所有AppHost
配置移至JsConfig.IncludeNullValues
设置代码。
如果您确实需要在服务类中执行此操作,例如如果您只是有条件地排除属性名称,那么另一种方法是确保ShortDescription
为假(我相信它是默认值)并且在您的服务代码集{{1}}中为适当时为null。 / p>