Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC操作被调用两次_Asp.net Mvc - Fatal编程技术网

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();
        }
        });
    });