asp.net-mvc – 将JSON格式的DateTime传递给ASP.NET MVC
|
我们知道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 – Asp.Net MVC 2 – 更改PropertyValueRequir
- global-variables – MVC 3 Razor _ViewStart中的公共变量
- ASP.NET MVC 3 – Ajax.BeginForm vs jQuery Form Plugin
- .net – REST API:与身体的GET请求
- asp.net-mvc – 是否可以模拟/伪造扩展方法?
- ASP.NET Core Web API模板中没有单独的用户帐户auth选项
- asp.net-mvc – 使用自定义ASP.NET MVC IValueProvider,而不
- asp.net – 我今天应该使用什么DOCTYPE?
- iis-6 – IIS 6上的ASP.NET路由
- 在加载asp.net页面时显示gif
- asp.net-mvc – 如何在验证汇总中显示MVC 3客户端
- asp.net-mvc – 如何在我的项目中实现强大的每个
- asp.net-mvc – ASP.NET MVC默认路由?
- 如何配置asp.net与.net 4.5
- asp.net – Safari浏览器忽略我的无缓存
- asp.net-mvc-3 – 在MVC3中使用自定义的IPrincip
- 从app_data中删除文件夹时如何防止asp.net重新编
- asp.net – Web API可查询 – 如何应用AutoMappe
- asp.net-mvc-3 – MVC将方法添加到jquery.valida
- asp.net – AutopostBack = True和AutoPostBack
