我有以下模型:
public class DocumentViewModel
{
public long Id { get; set; }
public long? ParentFolderId { get; set; }
public bool IsFolder { get; set; }
public bool IsImage { get; set; }
}
和以下API控制器:
public HttpResponseMessage GetChildren(long jobId, long folderId)
{
using (var model = DatabaseHelper.GetModel())
{
var accessLevel = MembershipHelper.GetLoggedInAccessLevel(model);
List<DocumentViewModel> documents = DocumentHelper.GetDocumentsForMobile(model, jobId, folderId, accessLevel).ToList();
return this.Request.CreateResponse(
HttpStatusCode.OK,
new { data = documents });
}
}
问题是,当我将其设置为false时,我在提琴手中审查了这一点时,iSfolter和isimage缺少。当他们设置为true时,它们很好。
我怀疑这是因为.net认为true是默认值,并且不包括该值与默认值相同的字段。
我如何告诉.net始终包含此值,无论如何?
在WebApiConfig
类的Register
方法中(位于App_Start
文件夹中)尝试添加此行:
config.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling =
Newtonsoft.Json.DefaultValueHandling.Include;
这应该强制Web API(如果还没有)。
编辑
如果您使用的是没有Webapiconfig的旧版本的Web API,则也可以在Global.asax.cs
中的Application_Start
方法中执行此操作:
var config = GlobalConfiguration.Configuration;
var jsonSettings = config.Formatters.JsonFormatter.SerializerSettings;
jsonSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;