加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 18:52:36 所属栏目:asp.Net 来源:网络整理
导读:我有视图与Model1,我把Ajax.BeginForm()和在这个View我有PartialView与Model2,我把Ajax.BeginForm()。所以只有在第一形式工作不引人注目的验证。为什么只有在第一形式工作验证? 第一视图 @model Model1@using (Ajax.BeginForm("Action1","Controller",nul
我有视图与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));
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读