繁体   English   中英

ASP.NET MVC 4.0中非侵入式验证中的奇怪行为

[英]Strange behavior in Unobtrusive validation in ASP.NET MVC 4.0

我正在使用ASP.NET MVC 4.0,并且使用JQuery Unobtrusive Validation遇到奇怪的行为。

我将其相关脚本放入了layout.cshtml中,当我打开视图并单击“提交”按钮时,确认消息不断出现,突然服务器调用被击中。 即调试器进入POST事件的服务器代码。

因此,基本上,这两种情况都在这里发生。 客户端验证以及服务器端事件。

我可以看到消息触发,但执行似乎仍在继续并转到服务器端。

这是我的查看代码:

 @using (Html.BeginForm("AddUser", "Registration", FormMethod.Post, new { enctype = "multipart/form-data", id = "frm1" }))
        {
            //some HTML markup
            .
            .
            .
            <div class="col-md-1 divside-left-first">
                <button type="submit" value="Save" id="Btnsave" class="btn ui-state-default medium">&nbsp;Submit&nbsp;</button>
            </div>
        }

我已将以下脚本放入底部的layout.cshtml文件 ,它们已在浏览器中正确呈现。 我检查了。

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

除此之外,除本地JQuery.js脚本外,我没有使用其他任何脚本。

我已经尝试过的事情:

  • 将脚本放在顶部 没用
  • 将按钮类型从按钮更改为输入。 没用
  • 尝试将脚本而不是layout.cshtml放到剖视图中。 没用

对于我在这里做错了或没有得到的任何帮助或建议,我们将不胜感激。

挣扎了将近一天后,我终于碰巧发现了我的情况下,这种情况的解决方案。 对于任何人来说可能都是别的东西,但是在我看来,这似乎可行:

我使用的JQuery版本和不干扰用户的验证JS的问题。 他们似乎不太顺利,每当发生POST事件时,我就会在浏览器控制台中看到一条错误消息,指出“意外令牌u”

因此,在深入研究该错误时,我知道这两个JS文件之间存在某种冲突,因此您需要使用一个附加的JS文件,这将有助于消除差异并使它们完美地协同工作。 该文件是:

jquery.migrate

您只需要在代码中添加此JS文件引用,并确保所有其他JS文件都位于适当的位置,然后运行代码即可。 此后,它按预期工作。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM