C# ASP.NET MVC 4.0中不引人注目的验证中的奇怪行为
我使用的是ASP.NETMVC4.0,我在JQuery中遇到了一个奇怪的行为—不引人注目的验证 我已将其相关脚本放入my layout.cshtml中,当我打开视图并点击提交按钮时,验证消息不断出现,突然服务器调用被点击。i、 将调试器逐步插入POST事件的服务器代码 所以基本上,这两件事都发生在这里。客户端验证以及服务器端事件 我可以看到消息正在启动,但执行似乎仍在继续,并转到服务器端 这是我的视图代码:C# ASP.NET MVC 4.0中不引人注目的验证中的奇怪行为,c#,asp.net,asp.net-mvc,asp.net-mvc-4,unobtrusive-validation,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Unobtrusive Validation,我使用的是ASP.NETMVC4.0,我在JQuery中遇到了一个奇怪的行为—不引人注目的验证 我已将其相关脚本放入my layout.cshtml中,当我打开视图并点击提交按钮时,验证消息不断出现,突然服务器调用被点击。i、 将调试器逐步插入POST事件的服务器代码 所以基本上,这两件事都发生在这里。客户端验证以及服务器端事件 我可以看到消息正在启动,但执行似乎仍在继续,并转到服务器端 这是我的视图代码: @using (Html.BeginForm("AddUser", "Registra
@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>
}
@使用(Html.BeginForm(“AddUser”,“Registration”,FormMethod.Post,new{enctype=“multipart/form data”,id=“frm1”}))
{
//一些HTML标记
.
.
.
提交
}
我已将以下脚本放入底部的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文件都位于正确的位置,然后运行代码。在这之后,它按预期工作
希望这能有所帮助。在挣扎了将近一天之后,我终于碰巧在我的案例中找到了解决方案。这对任何人来说都可能是另外一回事,但在我看来,这似乎是可行的: 我使用的JQuery版本和不引人注目的JS验证存在问题。他们似乎相处得不太好,我发现每当发生POST事件时,浏览器控制台中都会出现一个错误,说明“意外令牌u” 因此,在深入探讨该错误的同时,我发现这两个JS文件之间存在某种冲突,您需要使用一个额外的JS文件来帮助消除差异并使它们完美地协同工作。该文件是: jquery.migrate 您只需要在代码中添加此JS文件引用,并确保所有其他JS文件都位于正确的位置,然后运行代码。在这之后,它按预期工作
希望这有帮助。不相关,但你不需要jquery。不引人注目的ajax(这只适用于
ajax()
帮助者)@StephenMuecke-好吧,让我现在删除它,然后检查并返回。jquery.js在哪里?装了吗?这可能会有所帮助:。此外,在控制器的“AddUser”操作中是否有ModelState.IsValid的服务器端代码?这可能会有所帮助:@Vermanus-jquery文件已安全正确地加载。是的,我确实保留了服务器端验证,以防万一。但这不是预期的行为。@StephenMuecke-正如我们预期的,它没有影响任何事情。尽管如此,它仍然是不相关的,但您不需要jquery.unobtrusive ajax
(这仅适用于ajax()
助手)@StephenMuecke-好吧,让我现在删除它,然后检查并返回。jquery.js在哪里?装了吗?这可能会有所帮助:。此外,在控制器的“AddUser”操作中是否有ModelState.IsValid的服务器端代码?这可能会有所帮助:@Vermanus-jquery文件已安全正确地加载。是的,我确实保留了服务器端验证,以防万一。但这不是预期的行为。@StephenMuecke-正如我们预期的,它没有影响任何事情。还是原样