繁体   English   中英

C#MVC5 ValidationMessage用于使用jquery datetimepicker抛出“该字段必须是日期。”

[英]C# MVC5 ValidationMessageFor using jquery datetimepicker throw “The field must be a date.”

我检查了所有具有类似问题的主题,但找不到我做错的事情。

我的日期模型是:

[Display(Name = "StartDate")]
[DataType(DataType.DateTime), DisplayFormat(DataFormatString = "{0:dd.mm.yy HH:mm}", ApplyFormatInEditMode = true)]
public DateTime? DateFrom { get; set; }

在我的cshtml文件中是:

@Html.LabelFor(m => m.DateFrom)
@Html.TextBoxFor(m => m.DateFrom, new Dictionary<string, object> { { "class", "form-control datetimepicker" } })
@Html.ValidationMessageFor(m => m.DateFrom)

我使用的是datetimepicker插件-http://xdsoft.net/jqplugins/datetimepicker/ ,它以所需的格式将我带到文本框值,但验证时引发“字段StartDate必须是日期。”

查看截图

在此处输入图片说明 在此处输入图片说明

DateTimePicker实现:

$(".datetimepicker").datetimepicker({           
    dateFormat: 'dd.mm.yy',
        timeFormat: 'HH:mm'               
});

还尝试了:

$.validator.addMethod('date',
    function (value, element) {
        if (this.optional(element)) {
            return true;
        }
        var ok = true;
        try {
            $.datepicker.parseDateTime('dd.mm.yy HH:mm', value);            
        }
        catch (err) {
            ok = false;
        }
        return ok;
    });

院长,您遇到文化问题。

要为您的日期设置正确的区域性,请使用以下代码:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

en-US代表美国英语。 所需的文化正确的字符串替换

我认为您应该将控制器分为两个部分:
-一个(只需添加注释[HttpGet]),
-一个发布(只需添加注释[HttpPost])。

然后,您可以在post方法中编写个性化错误(例如,使用try catch块),以添加所需的消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM