我正在尝试在对话框加载部分视图时验证消息,但是存在验证错误,我遇到了问题。
以下是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代码的方式的情况下如何做到这一点的任何建议?
答案 0 :(得分:0)
这是因为jquery validate插件是在dom加载时加载的。你应该解析你在开始时不在的动态表格。
var form = $("#myForm");
form.removeData('validator');
form.removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse(form);