asp.net-mvc – 将JSON格式的DateTime传递给ASP.NET MVC
发布时间:2020-12-15 22:46:38 所属栏目:asp.Net 来源:网络整理
导读:我们知道MVC以这种格式返回JsonResult的DateTime:/ Date(1240718400000)/,我们知道如何在JS中解析它. 但是,似乎MVC不接受以这种方式发送的DateTime参数.例如,我有以下操作. [HttpGet]public ViewResult Detail(BookDetail details) { //... } BookDetail类
我们知道MVC以这种格式返回JsonResult的DateTime:/ Date(1240718400000)/,我们知道如何在JS中解析它.
但是,似乎MVC不接受以这种方式发送的DateTime参数.例如,我有以下操作. [HttpGet] public ViewResult Detail(BookDetail details) { //... } BookDetail类包含一个名为CreateDate的DateTime字段,我以这种格式从JS传递了一个JSON对象: {"CreateDate": "/Date(1319144453250)/"} CreateDate被识别为null. 如果我以这种方式传递JSON,它的工作原理如下: {"CreateDate": "2011-10-10"} 问题是我不能以简单的方式改变客户端代码,必须坚持/ Date(1319144453250)/这种格式.我必须在服务器端进行更改. 如何解决这个问题?这与ModelBinder有什么关系吗? 非常感谢! 解决方法
您怀疑的问题是模型绑定问题.
要解决它,创建一个自定义类型,让我们称之为JsonDateTime.因为DateTime是一个结构体,你不能继承它,所以创建下面的类: public class JsonDateTime { public JsonDateTime(DateTime dateTime) { _dateTime = dateTime; } private DateTime _dateTime; public DateTime Value { get { return _dateTime; } set { _dateTime = value; } } } 将CreateDate更改为此类型.接下来,我们需要一个自定义模型binder,如下所示: public class JsonDateTimeModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName).ToString(); return new DateTime(Int64.Parse( value.Substring(6).Replace(")/",String.Empty))); // "borrowed" from skolima's answer } } 然后,在Global.asax.cs中,在Application_Start中,注册您的自定义ModelBinder: ModelBinders.Binders.Add(typeof(JsonDateTime),new JsonDateTimeModelBinder()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – ASP.NET MVC 3控制器路由 – 使家庭控制器
- ASP.NET Core 依赖注入基本用法
- ASP.NET VB – 从类型’DBNull’到类型’String’的转换无效
- 【开源小软件 】Bing每日壁纸 让桌面壁纸保持更新
- asp.net-mvc – DAL中的app.config和WebApplication中的web
- asp.net-mvc – 带密码的.NET核心分布式Redis缓存
- asp.net-mvc – 使用RadioButtons的可空值布尔的MVC3 Edito
- asp.net – 在SQL中选择查询列中的所有值
- asp.net-mvc – 使用与状态模式合并的域模型
- 如何在ASP.NET中使用HtmlGenericControl创建一个Paragraph(
推荐文章
站长推荐
热点阅读