Asp.net mvc ASP.NET MVC操作被调用两次
我有一个特定的控制器操作,它被调用了两次,除了奇怪之外,它还会导致我的应用程序的单例部分出现问题(这不是一个真正的问题,它只是引起了我的注意)Asp.net mvc ASP.NET MVC操作被调用两次,asp.net-mvc,Asp.net Mvc,我有一个特定的控制器操作,它被调用了两次,除了奇怪之外,它还会导致我的应用程序的单例部分出现问题(这不是一个真正的问题,它只是引起了我的注意) 知道为什么控制器操作每次执行两次吗?不返回false或阻止JavaScript单击处理程序中通过AJAX进行调用的链接上的事件的默认操作。在这种情况下,它还将执行链接的默认操作(即,指向同一URL的非AJAX帖子) 前 $(函数(){ $('a')。在('click',函数(e)上{ //在此处使用“e.preventDefault();”进行求解 v
知道为什么控制器操作每次执行两次吗?不返回
false
或阻止JavaScript单击处理程序中通过AJAX进行调用的链接上的事件的默认操作。在这种情况下,它还将执行链接的默认操作(即,指向同一URL的非AJAX帖子)
前
$(函数(){
$('a')。在('click',函数(e)上{
//在此处使用“e.preventDefault();”进行求解
var href=$(this.attr('href');
$.get(href,function(){…});
//或者用“return false”解决;在这里防止重复请求
});
}):
我也有类似的问题。问题是由my_Layout.cshtml文件中的这一行引起的:
<link rel="shortcut icon" href="">
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
删除上述行后,我的操作被调用一次。很晚了,但我发现
<img id="myLogo" src="#"/>
让它再次打电话。希望这有助于某人,原因我不确定
在这里找到了解决方案。
这也太晚了,但也许这会对某些人有所帮助 我的问题与此类似(控制器方法将在初始加载时触发一次,然后立即异步再次触发) 我能够检查HttpContext.request对象,并确定第二个请求是由Visual Studio的“浏览器链接”功能引起的 我禁用了浏览器链接,对控制器方法的神秘ajax调用不再发生
从视图中删除可空参数
public ActionResult Edit(int? id)
到
在我的具体案例中,是两次加载
jquery.unobtrusiveajax.min.js
文件这导致了
$(document).ready(function(){})代码>要执行两次的函数
希望这会有帮助。我的问题是,我无意中将recaptcha/api.js
文件从google中包含了两次。一个在BaseLayout中,一个在view中。使用剑道网格时发生了此问题。使用网格选项自动绑定(false)。我也有类似的问题。问题是由partial view.cshtml文件中的此行引起的:
<link rel="shortcut icon" href="">
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
移除后,它是固定的。在我的控制器中,方法A调用方法B。很明显,它们被调用了两次。我通过写入输出窗口来验证这一点。有趣的是,它说:
Method A was called.
Method A was called.
Method B was called.
Method B was called.
我本以为是A、B、A、B。而且,尽管有两次呼叫,我只收到了一次XHR.statusText。我知道,因为该文本会自动添加到浏览器中的表中
无论如何,这个问题与jquery.form.js有关。我使用它来支持AJAX文件上传
文档中说,在$(document).ready()期间初始化jquery.form.js与HTML表单的连接时,可以添加一个名为“url”的选项。如果没有,则默认为窗体的操作
我依赖于默认值,得到了双重调用
当我添加url选项并从表单标签中删除操作时,问题就消失了。我分享了我的经验,以防它为某人服务,我有以下不便之处
提交按钮
<button type="submit" class="gb-btn-outline-primary margin-top-s" id="btnProcess">
<i class="fas fa-play margin-right-xs"></i> Procesar
</button>
我遇到的问题是,由于函数的单击,我调用了两次操作
这一行中的submit-->$(“#frmSearch”).submit()
该问题的解决方案是在函数click with的默认情况下避免该事件
e、 预防默认值()
以以下方式:
$(function () {
$('#btnProcess').click(function (e) {
e.preventDefault(); //<<---
var plantID = $("#plantID option:selected").val();
if (plantID == "" || plantID == null || plantID == 0) {
showMessage("2", "Seleccione la planta");
e.preventDefault();
}else{
var plant = $('#plantID option:selected').text();
$("#PlantName").val(plant);
var unit = $('#UnitID option:selected').text();
$("#UnitName").val(unit);
$("#remakeAudit").val(false);
$("#frmSearch").submit();
}
});
});
$(函数(){
$('#btnProcess')。单击(函数(e){
e、 preventDefault();//在我的例子中,我只需在我的操作中添加一个[HttpPost]
,问题就解决了。在我的例子中,我在同一视图文档中有两个具有相同id的html元素。请检查您的html页面(或视图页面)对于相同的id属性并清除相同的id名称。在我的例子中,我注意到每次我开始键入url时,浏览器都会预加载页面。当我然后按enter键时,它会再次被调用。解决方案只是检查它是否正在运行,如果正在运行,然后阻止方法调用。如果需要,我会很快发布代码;我很高兴st正在寻找任何人都可能提供的通用“gotcha”。查看从浏览器到服务器的请求。您是否看到一个或两个请求?如果一个:在此处发布一些代码,如果两个:查看tvanfosson的答案。我编辑所有图像,使其具有alt属性,另外我删除了src=“#”但是我有这个问题。任何想法。尝试在你的视图中注释所有的IMG标签。如果你的动作仍然被调用两次,然后尝试注释所有的链接标签。谢谢,这修正了我的问题。删除此链接为我解决了问题。您是否找到了原因,因为我在添加记录时遇到问题,所以当我们添加新记录时,会发生什么情况,它会添加记录,我们会添加逻辑重定向到索引页,而不是它会再次调用添加方法。这对我有帮助,我一直在搜索Days感谢您的帮助
$(function () {
$('#btnProcess').click(function (e) {
e.preventDefault(); //<<---
var plantID = $("#plantID option:selected").val();
if (plantID == "" || plantID == null || plantID == 0) {
showMessage("2", "Seleccione la planta");
e.preventDefault();
}else{
var plant = $('#plantID option:selected').text();
$("#PlantName").val(plant);
var unit = $('#UnitID option:selected').text();
$("#UnitName").val(unit);
$("#remakeAudit").val(false);
$("#frmSearch").submit();
}
});
});