Javascript 在弹出窗口内的部分视图中进行验证
我在MVC工作,我有一个场景如下: 我有一个名为ManageResource的视图,其中我将显示网格中的可用资源,并有一个按钮来添加新资源。如果单击“添加新资源”按钮,弹出窗口将打开,其中包含partialview,则当我单击“保存”而不输入任何值时,我必须在弹出窗口中显示验证结果,当我输入所需字段时,应在网格中填充值,并关闭弹出窗口`Javascript 在弹出窗口内的部分视图中进行验证,javascript,jquery,asp.net-mvc,popup,Javascript,Jquery,Asp.net Mvc,Popup,我在MVC工作,我有一个场景如下: 我有一个名为ManageResource的视图,其中我将显示网格中的可用资源,并有一个按钮来添加新资源。如果单击“添加新资源”按钮,弹出窗口将打开,其中包含partialview,则当我单击“保存”而不输入任何值时,我必须在弹出窗口中显示验证结果,当我输入所需字段时,应在网格中填充值,并关闭弹出窗口` @Html.ValidationSummary(false) <div class="form-group">
@Html.ValidationSummary(false)
<div class="form-group">
@Html.LabelFor(model => model.EmpID, "Employee ID", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.EmpID)
@Html.ValidationMessageFor(model => model.EmpID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FirstName,"First Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.LastName,"Last Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-5 col-md-10">
<input type="button" id="CreateResource" onclick="SaveResource()" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
iam无法在弹出窗口中获得验证结果,但可以保存数据的
@Html.ValidationSummary(false)
<div class="form-group">
@Html.LabelFor(model => model.EmpID, "Employee ID", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.EmpID)
@Html.ValidationMessageFor(model => model.EmpID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FirstName,"First Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.LastName,"Last Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-5 col-md-10">
<input type="button" id="CreateResource" onclick="SaveResource()" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
以下是我的代码:
Model-tblUser
public partial class tblUser
{
public int UID { get; set; }
[Required]
public int EmpID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public decimal Salary { get; set; }
}
View-ManageResource
@Html.ValidationSummary(false)
<div class="form-group">
@Html.LabelFor(model => model.EmpID, "Employee ID", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.EmpID)
@Html.ValidationMessageFor(model => model.EmpID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FirstName,"First Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.LastName,"Last Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-5 col-md-10">
<input type="button" id="CreateResource" onclick="SaveResource()" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
@使用Html.begin
{
@Html.AntiForgeryToken
@Html.ValidationSummary(false)
<div class="form-group">
@Html.LabelFor(model => model.EmpID, "Employee ID", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.EmpID)
@Html.ValidationMessageFor(model => model.EmpID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FirstName,"First Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.LastName,"Last Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-5 col-md-10">
<input type="button" id="CreateResource" onclick="SaveResource()" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
使用AJAX加载表单时,需要告诉jQuery unobtrusive validation将验证数据-属性添加到表单元素中
@Html.ValidationSummary(false)
<div class="form-group">
@Html.LabelFor(model => model.EmpID, "Employee ID", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.EmpID)
@Html.ValidationMessageFor(model => model.EmpID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FirstName,"First Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.LastName,"Last Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-5 col-md-10">
<input type="button" id="CreateResource" onclick="SaveResource()" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
加载完成后
@Html.ValidationSummary(false)
<div class="form-group">
@Html.LabelFor(model => model.EmpID, "Employee ID", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.EmpID)
@Html.ValidationMessageFor(model => model.EmpID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FirstName,"First Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.LastName,"Last Name", new { @class = "control-label col-md-1 col-md-3" })
<div class="col-md-6">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-5 col-md-10">
<input type="button" id="CreateResource" onclick="SaveResource()" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
function Create() {
BootstrapDialog.show({
title: "Add Resource",
message: $('<div id="CreatePopup"></div>').load('@Url.Action("Create","Resource")'
, function() {$.validator.unobtrusive.parse('#YourFormSelector');})
});
return false;
}
plz格式化您的问题…成功:函数结果{if result==true{window.location.href='@Url.ActionManageResource,Resource';}否则{$CreatePopup.htmlresult;}};即使是真的,整个视图也会加载到CreatePopup div中。加载表单后,您是否检查了输入上是否存在数据验证属性?我已将提交类型置于按钮,并使用javascript,而不是在begin表单中指定返回的位置。。现在它工作得很好。。谢谢你的反馈