ClientIndexModel
我有以下类型层次结构:
public class ViewModel
{
public virtual IDictionary<string, SelectList> SelectListDictionary
{
get
{
var props = GetType().GetProperties().Where(p => p.PropertyType == typeof(SelectList));
return props.ToDictionary(prop => prop.Name, prop => (SelectList)prop.GetValue(this, null));
}
}
}
public class IndexModel<TIndexItem, TEntity> : ViewModel where TIndexItem : ViewModel where TEntity : new()
{
public List<TIndexItem> Items { get; private set; }
}
public class ClientIndexModel: IndexModel<ClientIndexItem, Client>
{
}
我实例化并从ApiController返回ClientIndexModel
,如下所示:
public ClientIndexModel Get()
{
var model = new ClientIndexModel();
return model;
}
如果我在model
行上使用断点检查return model;
,则Items
属性存在,计数为0.但是,此操作返回的JSON只有{ {1}}属性,没有SelectListDictionary
属性。为什么会这样?
答案 0 :(得分:2)
您的Items
酒店有私人二手商家。具有私有setter的属性有意在序列化中被省略,因为序列化它们是没有意义的,因为它们永远不能被反序列化,因为它们的值不能从外部修改。因此,您应该完全删除setter(就像您对SelectListDictionary
属性所做的那样),将其公开或使用一些能够使用私有setter序列化属性的自定义序列化程序编写自定义格式化程序。