编程语言
首页 > 编程语言> > javascript-ASP .NET MVC,DateTimePicker和jQuery验证

javascript-ASP .NET MVC,DateTimePicker和jQuery验证

作者:互联网

我有一个带有StartTime日期和EndTime日期的模型:

[Required]
[DataType(DataType.DateTime)]
public DateTime StartTime { get; set; }

[Required]
[DataType(DataType.DateTime)]
public DateTime EndTime { get; set; }

使用这两个日期的当前视图具有以下形式:

@if (Roles.IsUserInRole("Teacher"))
{
    <h2>AddSession</h2>

    using (Html.BeginForm("SessionAdded", "Course", FormMethod.Post, new { id = "myform" }))
    {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Add Session</legend>
            <div class="editor-label">
                @Html.LabelFor(model => model.Name)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name)
                @Html.ValidationMessageFor(model => model.Name)
            </div>
            <div class="editor-label">
                @Html.LabelFor(model => model.StartTime)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.StartTime, new { @class = "date" , id = "StartTime" })
                @Html.ValidationMessageFor(model => model.StartTime)
            </div>
            <div class="editor-label">
                @Html.LabelFor(model => model.EndTime)
            </div>
            <div class="editor-field">
                @Html.TextBoxFor(model => model.EndTime, new { @class = "date", id = "EndTime" })
                @Html.ValidationMessageFor(model => model.EndTime)
            </div>
            <p>
                <input id="submit" type="submit" />
            </p>
        </fieldset>
    }
}

当我删除时:
< script src =“ @ Url.Content(”〜/ Scripts / jquery.validate.min.js“)” type =“ text / javascript”>< / script>我认为我没问题.

但是,当我使用jquery.validate时,将返回两个字段:请输入有效日期.我使用DateTimePicker for jQuery UI.

我有以下Javascript代码:

$(document).ready(function () {

var datepickers = $('.date').datetimepicker({
    minDate: 0,
    dateFormat: "dd/mm/yy",
    timeFormat: "hh:mm",
    onSelect: function (date) {
        var option = this.id == 'StartTime' ? 'minDate' : 'maxDate';
        datepickers.not('#' + this.id).datepicker('option', option, date);
    }
});

$("#myform").validate({
    ignore: ".date"
})

});

我想对我的两个Date字段(class =“ date”)忽略jQuery验证,因为它会检查特定的dateformat,我必须在我的应用程序中使用此格式:dd / mm / yyyy hh:mm.

我也尝试做一个自定义验证器,但是没有成功.我总是收到请输入有效日期错误…

谢谢你的帮助,

埃德

解决方法:

您可能需要将CurrentCulture更改为您使用的日期格式. Hanselman的分数约为post.您是否正在使用MVC随附的不干扰的验证?

这将是您需要做的更改(在我的情况下,文化是针对GB的)

web.config

<globalization culture="en-GB" uiCulture="en-GB" enableClientBasedCulture="false" />   

Global.asax

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

另外,您可以创建一个操作过滤器,以确保提交时该操作获得了区域性

public class CultureAwareActionAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            if (!string.IsNullOrEmpty(filterContext.HttpContext.Request["culture"]))
            {
                Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo(filterContext.HttpContext.Request["culture"]);
            }
        }
    }

您只需在方法声明上添加[CultureAwareAction]批注

(该过滤器是为Telerik团队编写的,用于处理其控件中的本地化内容)

标签:jquery-ui,asp-net,javascript,asp-net-mvc,jquery
来源: https://codeday.me/bug/20191201/2080083.html