C# 控制器中的操作方法被永久调用

C# 控制器中的操作方法被永久调用,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我的网站有问题,我正在创建。试着调试它时,我注意到当我点击F5运行该站点时,它会在前面创建的站点上不断创建该站点,并不断反复调用动作方法,最终firefox会吃掉所有的CPU。我注意到这是一个代码: Layout = "~/Views/Shared/_Layout.cshtml"; 这就是原因。如果我从视图中删除此代码,它就可以正常工作。知道有什么问题吗 我的观点是这样的: @model WebApplication1.Models.IndexViewModel @{ View

我的网站有问题,我正在创建。试着调试它时,我注意到当我点击F5运行该站点时,它会在前面创建的站点上不断创建该站点,并不断反复调用动作方法,最终firefox会吃掉所有的CPU。我注意到这是一个代码:

Layout = "~/Views/Shared/_Layout.cshtml";
这就是原因。如果我从视图中删除此代码,它就可以正常工作。知道有什么问题吗

我的观点是这样的:

   @model WebApplication1.Models.IndexViewModel

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="pageContentDiv">
    <h2>@ViewBag.Title</h2>
    <p>Lorem</p>
</div>
    <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

    <script src="~/Scripts/jquery-1.10.2.min.js"></script>

    <link href="~/Scripts/jquery-ui.min.css" rel="stylesheet" />
    <script src="~/Scripts/jquery-ui.min.js"></script>
    <script src="~/Scripts/OwnedScripts/InitializeUI.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            initUI();
        });        
    </script>
</head>
<body>
    <div class="topMenu">
       <div id="topMenuContentDiv" style="margin-left: 110px;">
           <ul>
               <li>@Html.ActionLink("Home", "Index", "Home")</li>
               <li>@Html.ActionLink("Roads", "Recs", "Home")</li>
               <li>@Html.ActionLink("Software", "Software", "Home")</li>
               <li>@Html.ActionLink("About", "About", "Home")</li>
               <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
           </ul>
       </div>
    </div>

    <div class="contentDiv" id="#contentDiv">
        <div id="decor" style="height: 640px; float: right;">
            <div id="decorPNG" style="background-image: url('../Images/VisualImages/decor.png'); width: 300px; height: 64px;
                float: right; margin-right: -20px; margin-top: 100px;">
            </div>
        </div>

        <div id="logoDiv">
            <h1>QitozNet</h1>
        </div>

        @RenderBody()

      <footer class="footer">
          <p>&copy; @DateTime.Now.Year - All rights reserved</p>
          <hr />
      </footer>        
    </div>
</body>
</html>
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

       public ActionResult Recs()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Temp";

            return View();
        }

        public ActionResult Software()
        {
            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }        

    }
}
    function initUI() {
    $(".topMenu").tabs();
    $("#logoDiv").toggle("slide", { direction: 'left' }, 2000);

    $("#decorPNG").mouseover(function () {
        $(this).css("cursor", "pointer");
        $(this).draggable({ axis: 'y', containment: "#decor" });
    });
}
索引方法一次又一次地被调用,似乎以一个永恒的循环返回。调试它时,我一直按F10键5分钟,意识到它只是在重新创建页面,但在旧页面的基础上,所以它最终复制了站点

我还尝试删除:
Layout=“~/Views/Shared/\u Layout.cshtml”,以便它们只驻留在:
\u ViewStart.cshtml
中,但不存在任何错误

initGUI脚本如下所示:

   @model WebApplication1.Models.IndexViewModel

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="pageContentDiv">
    <h2>@ViewBag.Title</h2>
    <p>Lorem</p>
</div>
    <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

    <script src="~/Scripts/jquery-1.10.2.min.js"></script>

    <link href="~/Scripts/jquery-ui.min.css" rel="stylesheet" />
    <script src="~/Scripts/jquery-ui.min.js"></script>
    <script src="~/Scripts/OwnedScripts/InitializeUI.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            initUI();
        });        
    </script>
</head>
<body>
    <div class="topMenu">
       <div id="topMenuContentDiv" style="margin-left: 110px;">
           <ul>
               <li>@Html.ActionLink("Home", "Index", "Home")</li>
               <li>@Html.ActionLink("Roads", "Recs", "Home")</li>
               <li>@Html.ActionLink("Software", "Software", "Home")</li>
               <li>@Html.ActionLink("About", "About", "Home")</li>
               <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
           </ul>
       </div>
    </div>

    <div class="contentDiv" id="#contentDiv">
        <div id="decor" style="height: 640px; float: right;">
            <div id="decorPNG" style="background-image: url('../Images/VisualImages/decor.png'); width: 300px; height: 64px;
                float: right; margin-right: -20px; margin-top: 100px;">
            </div>
        </div>

        <div id="logoDiv">
            <h1>QitozNet</h1>
        </div>

        @RenderBody()

      <footer class="footer">
          <p>&copy; @DateTime.Now.Year - All rights reserved</p>
          <hr />
      </footer>        
    </div>
</body>
</html>
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

       public ActionResult Recs()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Temp";

            return View();
        }

        public ActionResult Software()
        {
            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }        

    }
}
    function initUI() {
    $(".topMenu").tabs();
    $("#logoDiv").toggle("slide", { direction: 'left' }, 2000);

    $("#decorPNG").mouseover(function () {
        $(this).css("cursor", "pointer");
        $(this).draggable({ axis: 'y', containment: "#decor" });
    });
}
你的问题在这里:

<div class="topMenu">
   <div id="topMenuContentDiv" style="margin-left: 110px;">
       <ul>
           <li>@Html.ActionLink("Home", "Index", "Home")</li>
           <li>@Html.ActionLink("Roads", "Recs", "Home")</li>
           <li>@Html.ActionLink("Software", "Software", "Home")</li>
           <li>@Html.ActionLink("About", "About", "Home")</li>
           <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
       </ul>
   </div>
</div>
然后删除索引操作中不希望在所有页面上显示的任何代码。这将是您的容器,然后您的选项卡将呈现所有这些页面的部分视图。您的
PartialView
将呈现与以前相同的精确代码,但没有
\u Layout.cs
文件。它们仍将使用
.cshtml
文件中的
ActionLink
方法


第二种方法是使用。这就是CSS方法,您可以在活动页面的基础上添加CSS类“active”,而无需对ActionResults进行任何更改。

这是
initUI()中刷新页面或单击操作链接的代码吗?因此,当您删除Layout=“~/Views/Shared/_Layout.cshtml”时,它可以正常工作;在你看来?但你为什么要写这行?最后,即使不写那一行,你也必须得到那个视图?这段代码是做什么的?InitUI()函数$ready(函数(){initUI();});你是对的。导致问题的代码是JS代码。就是这部分:$(“.topMenu”).tabs();我在
  • 元素上添加了Jquery的.tabs()方法。为什么这与
  • @Html.ActionLink?你的应用程序中一定有其他代码导致了此问题,如果上面是你的真实代码,那么应该可以使用fibe,你有任何操作过滤器吗?我将尝试禁用当前页面的href ActionLink。但是如果我这样做了,那么我如何使它能够调用属于该href的Action方法呢?如果禁用ActionLink,我必须手动处理此问题。做但是这里显然存在一个问题,因为我无法联系控制器类,也无法在其中找到合适的操作方法。我无法在ActionLink上使用JQuery的.tabs(),这确实让我感到困扰。如果有人遇到过同样的问题,并且找到了其他东西来获得良好的选项卡外观,而不需要编写太多代码,请分享:-)您可以使用JQuery的
    .tabs()
    ActionLink()
    。如果你得到一个无止境的循环,问题就出在别的地方。通常,它是在某个地方使用
    @Html.Action()
    而不是
    @Html.ActionLink()
    @Url.Action()
    @Html.Action()
    调用控制器上的方法以返回视图也将包含
    @Html.Action()
    ,后者反过来再次调用它,依此类推)Stephen-无休止的循环是因为主页是Home/Index,其中包含一个Home/Index选项卡,它再次呈现包含所有选项卡的整个页面…等等。user1960836-为您提供了两种可能的解决方案。