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"> Submit </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 事件发生时,浏览器控制台中都会显示 "Unexpected token u" 错误。
因此,在深入探索该错误时,我了解到这两个 JS 文件之间存在某种冲突,您需要使用一个额外的 JS 文件来帮助消除差异并使它们完美地协同工作.该文件是:
jquery.migrate
您只需在您的代码中添加此 JS 文件引用并确保所有其他 JS 文件都在正确的位置,然后 运行 您的代码。之后它按预期工作。
希望对您有所帮助。
我正在使用 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"> Submit </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 事件发生时,浏览器控制台中都会显示 "Unexpected token u" 错误。
因此,在深入探索该错误时,我了解到这两个 JS 文件之间存在某种冲突,您需要使用一个额外的 JS 文件来帮助消除差异并使它们完美地协同工作.该文件是:
jquery.migrate
您只需在您的代码中添加此 JS 文件引用并确保所有其他 JS 文件都在正确的位置,然后 运行 您的代码。之后它按预期工作。
希望对您有所帮助。