asp.net-mvc – 不显眼的验证不适用于Ajax.BeginForm

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 不显眼的验证不适用于Ajax.BeginForm前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有视图与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了解更多详情。

所以在你的情况下,而不是在第一次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));
};

猜你在找的asp.Net相关文章