Kendo DatePicker格式验证和错误消息

时间:2013-10-10 09:49:27

标签: asp.net-mvc-4 datepicker kendo-ui

我创建了一个带有文化ar-SA的带有dd / MM / yyyy格式的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; }

3 个答案:

答案 0 :(得分: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 function

 $(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;
        }

    });

答案 1 :(得分:0)

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

kendo.culture("ar-SA"); 

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

答案 2 :(得分:0)

删除[Date(ErrorMessageResourceType = typeof(Global),ErrorMessageResourceName =“ValidStartDate_InvalidDate”)]  并使用这个正则表达式。

[数据类型(DataType.Date)]         [正则表达式(@“^(((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“)

公共日期时间? releavingDate {get;组; }