我正在使用Ajax.Begin表单在表单上发布数据而不刷新整个页面,我需要验证文本框,如果它有值,则应该发布数据,否则应该显示验证消息,但问题是验证和发布数据都是同时发生的。如果我不添加jquery.unobtrusive-ajax.js文件,那么我的局部视图将作为单独的白色页面返回,但验证正在工作,表单不会发布,直到文本框有值,但如果我在页面上添加jquery.unobtrusive-ajax.js文件,则无论文本框是否有值,它都会发布数据。代码出了什么问题,我一点也不明白。请帮帮我,我已经花了两天时间尝试了我可能的解决方案,但仍然没有成功。
这是我的主视图(父视图),其中包含PartialView
<div id="div_SearchPatient2">
@Html.Partial("SearchPatientPartial");
</div>
@Scripts.Render("~/bundles/jqueryval")jqueryval是一个包含jquery.unobtrusive-ajax.js文件的包。
<div>
@using (Ajax.BeginForm("Search", "Patient", new { },
new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "patientfound"
},
new
{
@name = "SearchPatientForm",
@id = "frmSearchPatient",
}
))
{
@Html.AntiForgeryToken()
<div class="form-title">
Enter MR Number to search patient
</div>
<div class="col-lg-4">
<div class="form-group">
<div class="col-lg-6">
<label class="control-label">MR Number</label>
</div>
<div class="col-lg-6">
<input type="text" class="form-control" name="command" data-mask="999-99-99" placeholder="000-00-00" required data-bv-notempty="true" data-bv-notempty-message="MRNo. is required." />
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-4">
<input class="btn btn-darkorange" type="submit" value="Search" />
</div>
</div>
<div id="patientfound">
@Html.Partial("PatientFoundPartial")
</div>
}
</div>其中patientfound是一个div,如果找到它,它将呈现详细信息。我已经在AjaxBeginForm的UpdateTargetId中给出了这一点。
我的控制器返回PartialView
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Search(FormCollection collection, string id)
{
// some code to get data
return PartialView("PatientFoundPartial");
}发布于 2016-03-10 14:11:06
在Ajax选项中,如下所示:
OnBegin = "return StartValidation();"现在使用以下代码定义一个名为StartValidation的javascript函数:
function StartValidation(){ if($('fromid').validate()){return true;}return false;}https://stackoverflow.com/questions/35908666
复制相似问题