[英]Serializing dates for Safari on MacOs in asp.net MVC & WebApi app with ExtJs
[英]ASP.Net WebApi is not serializing bool if set to true
我有以下模型:
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 });
}
}
问题是当我在Fiddler中将它们设置为false时,在json中缺少IsFolder和IsImage的问题。 设置为true时,它们显示良好。
我怀疑这是因为.Net认为true是默认值,并且排除了该值与默认值相同的字段。
我如何告诉.Net始终包含此值,无论如何?
在WebApiConfig
类的Register
方法(位于App_Start
文件夹中)中,尝试添加以下行:
config.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling =
Newtonsoft.Json.DefaultValueHandling.Include;
如果尚未提供默认值,这将强制Web Api包含默认值。
编辑
如果使用的Web API较旧版本没有WebApiConfig,也可以在Global.asax.cs
的Application_Start
方法中执行此操作:
var config = GlobalConfiguration.Configuration;
var jsonSettings = config.Formatters.JsonFormatter.SerializerSettings;
jsonSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.