ASP.NET MVC 4.0中不显眼验证中的奇怪行为

时间:2015-12-02 12:30:47

标签: c# asp.net asp.net-mvc asp.net-mvc-4 unobtrusive-validation

我正在使用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。没有工作。

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

1 个答案:

答案 0 :(得分:0)

经过近一天的挣扎,我终于碰巧在我的案例中找到了的解决方案。它可能是任何人的其他东西,但在我的情况下,这似乎工作:

我正在使用的JQuery版本和不显眼的验证JS的问题。他们似乎并不顺利,我发现在发生POST事件时,浏览器控制台中出现了&#34;意外令牌u&#34; 错误。

因此,在深入探索该错误时,我发现这两个JS文件之间存在某种冲突,您需要使用一个额外的JS文件来帮助消除差异并使它们完美地协同工作。那个文件是:

<强> jquery.migrate

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

希望这有帮助。