c# - 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

标签 c# javascript ajax asp.net-mvc

我有一个 MVC 操作,它的参数之一是 DateTime,如果我传递“17/07/2012”,它会抛出一个异常,指出参数为 null 但不能有 null 值但如果我传递 01/07/2012,它会被解析为 Jan 07 2012

我正在以 DD/MM/YYYY 格式将日期传递给 ajax 调用,我是否应该依赖 MM/DD/YYYY 格式,尽管在web.config?

这是一个简单的方法,只有一个日期参数。

最佳答案

在 Asp.NET-MVC 中,您有三个安全选项来发送日期参数:

  • 将其作为 YYYY/MM/DD 发送,这是国际日期的 ISO 标准。
  • 使用POST请求代替GET请求。

  • 如果您想更改默认 Model Binder 绑定(bind)日期的方式:

您可以使用 IModelBinder 更改默认模型绑定(bind)器以使用用户区域性

public class DateTimeBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        var date = value.ConvertTo(typeof(DateTime), CultureInfo.CurrentCulture);

        return date;    
    }
}

并在 Global.Asax 中写入:

ModelBinders.Binders.Add(typeof(DateTime), new DateTimeBinder());
ModelBinders.Binders.Add(typeof(DateTime?), new DateTimeBinder());

阅读更多信息 this excellent blog描述了为什么 Mvc 框架团队为所有用户实现了默认文化。

关于c# - 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10519748/

相关文章:

c# - ToolStripMenuItem 添加到几个地方?

c# - "Publish language"选项到底是什么?

javascript - EXT JS 无法同时加载多个页面

c# - 创建我的第一个网络应用程序,使用什么技术?

c# - 检查一周内的日期时间段是否可用

c# - 从范围引用了类型为 'x' 的变量 'Product',但未定义

c# - Ajax Web 服务调用 - 不存在 'Access-Control-Allow-Origin' header

php - 使用 php 的基于 Ajax jquery 的登录

php - 来自 PHP Chunked Response 的 HTML5 视频标签,可能吗?

javascript - 无法禁用简单的 a 标签