发布:2015/8/5 12:07:00作者:管理员 来源:本站 浏览次数:1533
MVC框架下使用EasyUI的datagrid加载数据时,服务端返回的Json日期格式
为 /Date(1433088000000+0800)/
,需要客户端进一步转换,而且也不符合EasyUI常用的日期格式要求,为此,对MVC框架下的Controller做了一些研究,发现通过对
Controller的Json方法进行扩展就可以解决该问题,而且可以通过进一步自定义序列化类,满足任何类型的数据的序列化格式要求。
要实现该目标,需要完成三个步骤的工作:
1、创建Controller的派生类,引入自定义JsonResult
2、创建JsonResult的派生类,实现Json日期格式的自定义实现
3、所有需要实现自定义日期序列化格式的控制器,需继承于上述Controller的派生类
具体代码实现示例如下:
/// <summary>
/// 张军
/// 2015-08-05
/// 通过重载ExecuteResult方法,实现自定义序列化日期的实现
/// </summary>
public class BGJsonResult : JsonResult
{
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
HttpResponseBase response = context.HttpContext.Response;
if (this.Data != null)
{
JsonSerializerSettings setting = new JsonSerializerSettings();
// 设置日期序列化的格式
setting.DateFormatString = "yyyy-MM-dd HH:mm:ss";
response.Write(JsonConvert.SerializeObject(Data, setting));
}
}
}
/// <summary>
/// 张军
/// 2015-08-05
/// 通过创建Controller的派生类来引入自定义的Json实现
/// </summary>
public class BGController : Controller
{
protected override JsonResult Json(object data, string contentType, Encoding contentEncoding)
{
return new BGJsonResult { Data = data, ContentType = contentType, ContentEncoding = contentEncoding };
}
public new JsonResult Json(object data, JsonRequestBehavior jsonRequest)
{
return new BGJsonResult { Data = data, JsonRequestBehavior = jsonRequest };
}
public new JsonResult Json(object data)
{
return new BGJsonResult { Data = data, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
}