加载视图时,控制器的动作被调用两次

时间:2019-10-16 05:20:13

标签: c# asp.net-core model-view-controller

我正在开发一个asp.net核心应用程序,在该应用程序中,单击超链接时将加载视图。视图加载良好,但是这里发生的奇怪事情是,每当我单击超链接时,对控制器动作的调用都会进行两次。当我在动作方法上放置调试点时,我无意中发现了这个问题,并且它被击中了两次。然后,我还检查了浏览器中的“网络流量”选项卡,还发现两次记录了对控制器动作的调用。

布局页面中超链接的标记:

<li><a asp-action="ApplyLeave" asp-controller="Home">Apply Leave</a></li>

控制器的操作方法:

[HttpGet]
public IActionResult ApplyLeave()
        {
            .......
            .......
            .......
            return View();
        }

ApplyLeave.cshtml

@{
    ViewData["Title"] = "Apply Leave";
}
<header class="page-header">
    <div class="container-fluid">
        <div class="row">
            <div class="col-12">
                <h2 class="no-margin-bottom">
                    Apply Leave
                </h2>
            </div>
        </div>
    </div>
</header>

在浏览器中捕获的网络流量的屏幕截图: enter image description here

请提前帮助我解决这个问题!

2 个答案:

答案 0 :(得分:1)

如果在“网络”选项卡的控制台窗口中看到您的请求,则有两种请求:-

1:文档类型 2:XmlHttpRequest

文档类型请求来自“查看即操作”链接,其中提到了操作方法名称,但是如果您看到另一个请求,则该请求来自Javascript环境。

请参阅XMLHttpRequest的正式定义: XMLHttpRequest(XHR)是对象形式的API,其方法在Web浏览器和Web服务器之间传输数据。该对象由浏览器的JavaScript环境提供。

请对您的JS部分进行一次验证。

答案 1 :(得分:0)

谢谢大家对此的关注。 我有site.js,在其中保留了所有脚本代码和ajax调用的代码。 曾有一个ajax调用本打算在特定页面上调用,但是由于代码不正确,该ajax调用是在每隔一页加载后触发的。 因此,我更正了该Ajax调用的代码,现在我看不到对控制器的任何重复调用,一切工作正常。 谢谢大家。