2

我正在创建一个页面,该页面具有 dd/MM/yyyy 格式和文化 ar-SA 的 Datepicker,但是当我尝试设置日期时,它总是返回无效日期,这里是 datepicker

@Html.Kendo().DatePickerFor(model => model.ValidStartDate).HtmlAttributes(new { id = "ValidStartDate_" + Model.ItemCode }).Culture("ar-SA").Format("dd/MM/yyyy").ParseFormats(new string[] {"dd/MM/yyyy"})

另一个问题是验证消息它总是返回默认消息而不是我在视图模型中设置的自定义消息

[Date( ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "ValidStartDate_InvalidDate")]
        public Nullable<System.DateTime> ValidStartDateH { get; set; }
4

3 回答 3

2

模型:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
[Required(ErrorMessage = "Pick a date from Kendo Date Picker")]
public DateTime mydate{ get; set; }

看法:

@(Html.Kendo().DatePickerFor(m=>m.mydate)
              .Name("MyDate")
              .Format("dd/MM/yyyy")
              .ParseFormats(new string[] {"dd/MM/yyyy"})

添加脚本 document.ready 函数

 $(document).ready(function () {
        kendo.culture("en-GB");

        $.validator.methods['date'] = function (value, element) {
            var check = false;
            var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
            if (re.test(value)) {

                var adata = value.split('/');
                var dd = parseInt(adata[0], 10);

                var mm = parseInt(adata[1], 10);
                var yyyy = parseInt(adata[2], 10);
                var xdata = new Date(yyyy, (mm - 1), dd);

                if ((xdata.getFullYear() == yyyy) && (xdata.getMonth() == (mm - 1)) && 
                    (xdata.getDate() == dd)) {

                    check = true;
                }
                else {
                    alert(value);
                    check = false;
                }

            } else
                check = false;
            return this.optional(element) || check;
        }

    });
于 2013-12-19T13:19:40.240 回答
0

删除 [Date(ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "ValidStartDate_InvalidDate")] 并使用此正则表达式。

[DataType(DataType.Date)] [RegularExpression(@"^(((0[1-9]|[12]\d|3[01])/(0[13578]|1[02])/(( 19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)/(0[13456789]|1[012])/(( 19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])/02/((19|[2-9] \d)\d{2}))|(29/02/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][ 26])|((16|[2468][048]|[3579][26])00))))$", ErrorMessageResourceType = typeof(Object), ErrorMessageResourceName = "ValidStartDate_InvalidDate")

公共日期时间?释放日期 { 得到;放; }

于 2014-01-08T12:57:07.923 回答
0

我通过在加载脚本中设置文化来解决日期格式错误消息

kendo.culture("ar-SA"); 

但我仍然有第二个问题,即自定义文本消息仍未从数据注释消息中返回

于 2013-10-10T13:18:41.363 回答