我有视图与Model1,我把Ajax.BeginForm()和在这个View我有PartialView与Model2,我把Ajax.BeginForm()。所以只有在第一形式工作不引人注目的验证。为什么只有在第一形式工作验证?
第一视图
@model Model1 @using (Ajax.BeginForm("Action1","Controller",null,new AjaxOption(){ onSuccess = "alert('=)')"},null) { <intput type="submit" value="Save" /> } Model2 model2 = new Model2(); @Html.EditorFor(m=>model2)
**在Model2视图中有。 **
@model Model2 @using (Ajax.BeginForm("AddStreet",new AjaxOption(){onSuccess = "alert('=)'")},option,null) { @Html.LabelFor(m => Model.Name): @Html.TextBoxFor(m => Model.Name) @Html.ValidationMessageFor(m => Model.Name) <intput type="submit" value="Save" /> }
感谢@Darin Dimitrov的答案。
解决方法
这是因为第二个视图在以后的阶段加载了AJAX,你需要调用$ .validator.unobtrusive.parse(…)
紧接在其内容被注入到DOM之后,以便实现不显着的验证。查看 following blog post了解更多详情。
紧接在其内容被注入到DOM之后,以便实现不显着的验证。查看 following blog post了解更多详情。
所以在你的情况下,而不是在第一次AJAX调用的OnSuccess回调中提醒,订阅一个javascript函数,它将调用这个方法:
@using (Ajax.BeginForm( "Action1",new AjaxOptions { OnSuccess = "onSuccess",UpdateTargetId = "result" },null) ) { <input type="submit" value="Save" /> }
然后在您的javascript文件中:
var onSuccess = function(result) { // enable unobtrusive validation for the contents // that was injected into the <div id="result"></div> node $.validator.unobtrusive.parse($(result)); };