当前位置:  开发笔记 > 后端 > 正文

在ASP.NET MVC 5中粘贴日期格式

如何解决《在ASP.NETMVC5中粘贴日期格式》经验,为你挑选了1个好方法。

我在ASP.NET MVC 5项目中使用JQueryUI Datepicker.我希望用户在"创建"和"编辑"视图中以mm/dd/yy格式输入日期.这是我迄今为止所取得的成就:

这是我的模特:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString =
   "{0:MM-dd-yyyy}",
    ApplyFormatInEditMode = true)]
public DateTime ProjectDeadline { get; set; }

这是_Layout.cshtml中的jQuery代码:


在创建视图我有这个: 在此输入图像描述

在编辑视图中我有这个: 在此输入图像描述

如果我没有在编辑中触摸日期并点击保存,我会收到警告:

ProjectDeadline字段必须是日期.

我尝试了许多可能性来获得我想要的东西,但这是我能得到的最好的东西.我在大多数尝试中都遇到了错误.你能告诉我如何修复我的代码以正确地在日期字段中获取mm/dd/yyyy格式吗?谢谢.



1> janhartmann..:

我已经多次遇到过这个问题,但是我已经想出了CustomDateTimeModelBinder查看DisplayFormat属性并将其绑定到模型的内容:

// 
/// This makes the model binder able to find a custom datetime format
/// 
public class CustomDateTimeModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var displayFormat = bindingContext.ModelMetadata.DisplayFormatString;
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);

        if (!String.IsNullOrEmpty(displayFormat) && value != null)
        {
            DateTime date;
            displayFormat = displayFormat.Replace("{0:", String.Empty).Replace("}", String.Empty);
            if (DateTime.TryParseExact(value.AttemptedValue, displayFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
            {
                return date;
            }

            bindingContext.ModelState.AddModelError(bindingContext.ModelName, String.Format("{0} is an invalid date format", value.AttemptedValue));
        }

        return base.BindModel(controllerContext, bindingContext);
    }
}

在您的应用程序启动中,连接它:

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

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有