MVC 4 HomeController构造函数和操作始终被激发

本文关键字:操作 HomeController 构造函数 MVC | 更新日期: 2023-09-27 18:26:20

我已经寻找解决方案两天了。也许我脑子进水了,所以我不得不寻求帮助。

我有一个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:555883
网址:/

(对不起,我没有发布图片,我还没有足够的声誉)

到目前为止还不错。现在,当我点击网格中的一个链接时,让我们说"项目"。我希望看到Products列表,我确实看到了,但如果我在调试,我会看到HomeController中的Index方法也被激发了。然后调用ProductsController中的Category方法。

不仅如此。假设我看到了Products列表,然后我点击了其他一些链接(转到其他视图,我已经测试了很多案例),HomeController Index()也被调用了。

在Fiddler中,当我单击Items链接时,我会在URL列中看到第一个"/",然后是"Products/Category/ROOT"。

按照这个例子,在该视图中,我点击了一个链接,该链接指向"搜索/结果",在Fiddler中我看到了"/",然后是"Search/Result?productCategory=…"

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

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

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

再说一遍,首先是首页/索引,然后重定向到谷歌。

我想这可能与路线配置有关,或者可能与正在制作的海报有关。也许这是mvc生命周期中的正常流程,我什么都不想,呵呵。

有什么想法吗?提前谢谢。我希望我已经足够清楚了。

MVC 4 HomeController构造函数和操作始终被激发

许多现代浏览器"预加载"链接页面。因此,当你加载一个页面时,它也可能加载链接到这些页面的页面。因此,如果你有返回主页的链接,那么这些页面可能会被浏览器加载以提高性能。