MVC 4 HomeController构造函数和动作总是被触发

时间:2014-10-13 18:50:29

标签: c# asp.net-mvc asp.net-mvc-4 fiddler

我现在一直在寻找解决方案2天。也许我的思想受阻,所以我不得不寻求帮助。

我在MVC 4中有一个项目,它有许多控制器,模型和视图。我保留了HomeController并使用Index操作作为站点的默认条目。我有一个网格,如下所示:

<div class="ui-grid-b home-icon-grid">
    <div class="ui-block-a"><a href="@Url.Action("Index", "Cart")"><div class="home-icon" style="background-color:#b13a3a"><i class="fa fa-3x fa-shopping-cart"></div></a><div class="icon-title">@Mobile.Resources.Resources.resCart</div></div>                 
    <div class="ui-block-c"><a href="@Url.Action("Category", "Products", new {id = "ROOT"})"><div class="home-icon" style="background-color:#1c70ef"><i class="fa fa-3x fa-tags"></i></div></a><div class="icon-title">@Mobile.Resources.Resources.resItems</div></div>            
    <div class="ui-block-c"><a href="@Url.Action("Index", "Settings")"><div class="home-icon" style="background-color:#6b6b6b"><i class="fa fa-3x fa-gear"></i></div></a><div class="icon-title">@Mobile.Resources.Resources.resSettings</div></div>  
  </div> 

正如所料,每次我开始调试时,我都能看到方法

public ActionResult Index() {code}
在HomeController.cs中

被触发。

另外,在Fiddler中,我在开始时看到以下内容:

主持人:localhost:55883
网址:/

(抱歉,我不发布图片,但我还没有足够的声誉)

到目前为止一切顺利。现在,当我点击网格中的一个链接时,让我们说&#34; Items&#34;。我希望看到产品列表,而且我会这样做,但如果我正在调试,我会看到HomeController中的Index方法也被触发了。然后调用ProductsController中的Category方法。

不仅如此。让我们说我看到了产品列表,然后点击其他链接(转到其他视图,我已经测试了很多情况),也调用了HomeController Index()。

在Fiddler中,当我点击Items链接时,我首先看到&#34; /&#34;在URL列中,然后是&#34; Products / Category / ROOT&#34;一。

按照示例,在该视图中,我点击了一个链接,该链接转到了&#34;搜索/结果&#34;,在Fiddler我看到&#34; /&#34;然后&#34;搜索/结果?productCategory = ...&#34;

这种情况发生在整个网站上。每次单击锚点时,首先调用Home / Index,然后调用所选路径。

我甚至试过使用一个简单的锚:

<a href="http://google.com">Google</a>

再次,首先是Home / Index,然后重定向到Google。

我认为它可能与路由配置有关,或者可能存在POST的内容。也许是mvc生命周期中的正常流程,而且我什么都不知道,呵呵。

有什么想法吗?提前致谢。我希望我很清楚。

1 个答案:

答案 0 :(得分:1)

许多现代浏览器“预加载”链接页面。因此,当您加载页面时,它还可能会加载链接到这些页面的页面。因此,如果您有回到主页的链接,那么浏览器可能会加载这些页面以提高性能。