MVC - 在错误的jquery对话框中使用validationmessagefor

时间:2014-01-28 12:39:36

标签: javascript jquery asp.net-mvc validation

我正在尝试在对话框加载部分视图时验证消息,但是存在验证错误,我遇到了问题。

以下是js代码的一部分:

 buttons: {
        "Save": {
            text: 'Save',
            class: 'dialogBtnBlue',
            click: function (event, ui) {
                var form = $('#dayoff');
                $.ajax({
                    cache: false,
                    async: true,
                    type: "POST",
                    url: form.attr('action'),
                    data: form.serialize(),
                    success: function () {

                        $("#newHolidayWindow").dialog('close');
                    },
                    complete: function () {
                        $('#_page_'+ counter).load("PublicHolidaysTable", { id: id, page: counter });
                    },
                    error: function () {
                       // HERE


                    },

我会错误地发生这种情况,当我用'alert('填写字段')进行测试时,它可以工作,我所要做的就是正确设置它,但我不知道怎么做,我我尝试了很多东西。

以下是观点:

     @model Coats.TimeOFFEntMvcWeb.Models.Days_Off

<div class="grid" style="width: 600px !important;margin-top: -30px;">
     @using (Html.BeginForm("AddNewPublicHoliday_Create", "Administration", FormMethod.Post, new { id = "dayoff" }))
     { 
        @Html.ValidationSummary(true)
    <div class="row">
        <h3 style="font-weight: bold">Adding Public Holiday</h3>
    </div>

    <div class="row">
        <h3>Date</h3>
        <h4>Select public holiday date.</h4>
        <div class="input-control text span3" >
            @Html.DisplayFor(model => model.Region_ID)
                        @Html.EditorFor(model => model.Date)
            @Html.ValidationMessageFor(model => model.Date)
            </div>
    </div>
             <div class="row" style="width: 800px">
        <h3>Title</h3>
        <h4>Fill in public holiday name.</h4>

                 @Html.HiddenFor(model => model.Region_ID)

                 <div class="input-control text span3">
                     @Html.EditorFor(model => model.Days_Off_Name)
                     @Html.ValidationMessageFor(model => model.Days_Off_Name)
                 </div>
</div>

        } 
</div>
<script src="~/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>

用于此的2个动作:

        public ActionResult AddNewPublicHoliday(long id)
    {
        Days_Off day = new Days_Off() { Region_ID = id };


        return PartialView(day);
    }

    [HttpPost]
    public ActionResult AddNewPublicHoliday_Create(Day_Off day)
    {

            db = new Entities();
            db.Days_Off.Add(day);
            db.SaveChanges();
            return RedirectToAction("Index");


    }

该对话框加载AddNewPublicHoliday(这是我希望验证消息显示的位置,就像在常规页面上一样)。 AddNewPublicHoliday_Create仅作为Post存在,并由beginform调用,如您所见。

关于如何在不大幅改变我的js代码的方式的情况下如何做到这一点的任何建议?

1 个答案:

答案 0 :(得分:0)

这是因为jquery validate插件是在dom加载时加载的。你应该解析你在开始时不在的动态表格。

var form = $("#myForm");
form.removeData('validator');
form.removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse(form);