asp.net-mvc – MVC4 Action返回没有null的JsonResult
发布时间:2020-05-24 11:46:49 所属栏目:asp.Net 来源:互联网
导读:我有一个动作,它返回一个特定类的对象的JsonResult.我已经使用一些attrib来装饰这个类的属性以避免使用null字段.类定义是: private class GanttEvent { public String name { get; set; } [JsonProperty(NullValueHandling = NullValueHandli
|
我有一个动作,它返回一个特定类的对象的JsonResult.我已经使用一些attrib来装饰这个类的属性以避免使用null字段.类定义是: private class GanttEvent
{
public String name { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public String desc { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public List<GanttValue> values { get; set; }
}
在我的动作中我使用了一个对象 var res = new List<GanttEvent>(); 我回来使用: return Json(res,JsonRequestBehavior.AllowGet); 不幸的是,我仍然在输出时收到空值: [{"name":"1.1 PREVIOS AL INICIO ","desc":null,"values":null},{"name":"F04-PGA-S10","desc":"Acta preconstrucción",{"name":"F37-PGA-S10","desc":"Plan de inversión del anticipo",{"name":"F09-PGA-S10","desc":"Acta de vecindad",{"name":"F05-PGA-S10","desc":"Acta de inicio",{"name":"F01-PGA-S10","desc":"Desembolso de anticipo","values":null}]
我错过了什么或做错了什么? 解决方法正如Brad Christie所说,MVC4仍然使用JavaScriptSerializer,因此为了让你的对象被Json.Net序列化,你将不得不执行几个步骤.首先,从JsonResult继承一个新类JsonNetResult,如下所示(基于this solution): public class JsonNetResult : JsonResult
{
public JsonNetResult()
{
this.ContentType = "application/json";
}
public JsonNetResult(object data,string contentType,Encoding contentEncoding,JsonRequestBehavior jsonRequestBehavior)
{
this.ContentEncoding = contentEncoding;
this.ContentType = !string.IsNullOrWhiteSpace(contentType) ? contentType : "application/json";
this.Data = data;
this.JsonRequestBehavior = jsonRequestBehavior;
}
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
throw new ArgumentNullException("context");
var response = context.HttpContext.Response;
response.ContentType = !String.IsNullOrEmpty(ContentType) ? ContentType : "application/json";
if (ContentEncoding != null)
response.ContentEncoding = ContentEncoding;
if (Data == null)
return;
// If you need special handling,you can call another form of SerializeObject below
var serializedObject = JsonConvert.SerializeObject(Data,Formatting.None);
response.Write(serializedObject);
}
}
然后,在您的控制器中,重写Json方法以使用新类: protected override JsonResult Json(object data,JsonRequestBehavior behavior)
{
return new JsonNetResult(data,contentType,contentEncoding,behavior);
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – gzip压缩在Windows Azure网站
- asp.net – 检查该电子邮件地址是否适用于System.Net.Mail.
- 在ASP.NET MVC网站中无法获取详细的错误信息
- asp.net-mvc – 从Ajax表单帖子中重定向
- asp.net – 错误:数据绑定方法(如Eval(),XPath()和Bind()只
- Asp.Net Identity – 登录后更新声明
- asp.net-mvc – 每个请求DbContext发生随机错误
- asp.net-mvc – 使用cshtml页面的angularjs不是带有web api
- asp.net-mvc – 在ASP.NET MVC中添加服务引用4
- asp.net-mvc – Asp.net MVC 3路由区域失败
推荐文章
站长推荐
- 隐藏ASP.NET菜单项
- asp.net – 如何在.aspx页面中访问c#变量的值?
- asp.net-mvc – 在MVC Razor视图页面中使用strin
- asp.net – 带有UpdatePanel Viewstate问题的JQu
- asp.net-mvc – angular js和asp.net mvc 4示例应
- asp.net-mvc-3 – 如何模拟查询字符串
- 如何在IIS10中正确启动asp.net应用程序
- asp.net – 在.NET 4下编译时出现“具有相同密钥
- asp.net – precompiledApp.config的目的是什么?
- asp.net – OWIN第二天拒绝身份验证cookie
热点阅读
