在Asp.Net Core中,是否有一种“简便的方法”可以忽略模型序列化中某个类型集合的属性?
样品
public sealed class MainViewModel
{
public Guid Id { get; set; }
[JsonIgnore("PropertyInSubViewModel")]
public ICollection<SubViewModel> Products { get; set; }
}
这个想法是从模型序列化中删除SubViewModel
中的一些属性,因此当我执行该操作时,它将具有默认值,而不是通过请求设置的默认值。
答案 0 :(得分:2)
不适用于JsonIgnore
。那只能应用于您要忽略的实际属性,并且在那时是恒定的。但是,JSON.NET确实支持conditional serialization。最简单,最直接的方法是向您的班级添加ShouldSerialize*
方法。您显然需要确定一些可以依靠的条件,但这可能很简单,因为实际上是在子视图模型实例上设置一些布尔值。基本上,您只需添加以下内容:
public class SubViewModel
{
...
public bool ShouldSerializePropertyInSubViewModel()
{
// return true or false to either allow or disallow serializing the property on this instance
}
}