将视图映射到控制器不工作

Map View to controller not working

我有以下 html 代码:

<li>@Html.ActionLink("Home", "Index", "HomeController")</li>
<li>@Html.ActionLink("About", "About", "HomeController")</li>
<li>@Html.ActionLink("Contact", "Contact", "HomeController")</li> 
...
@RenderBody()

视图称为 Index.cshtml、About.cshtml 和 Contact.cshtml

Controller class' 相关方法如下所示:

public ActionResult Index()
{
    return View();
}
public ActionResult About()
    {
        return View();
    }
public ActionResult Contact()
    {
        ViewBag.Message = "Contact me";

        return View();
    }

现在我的问题是当我点击 tabs/action 链接时没有任何反应。 我期待这样:<li>@Html.ActionLink("About", "About", "HomeController")</li> 表现得像正常的 <a href="...">...</a>,并将我带到引用的视图。我是不是漏掉了什么?

我已经尝试在控制器中设置断点 class 以查看是否应该 return 调用视图的方法,但它们从未被触及

ASP.NET MVC 使用称为 Convention over Configuration 的原则,在大多数情况下可以简化开发。

在您的特定情况下,问题出在控制器的约定中。每当 MVC 找到一个应该指向控制器的 "magic string" 时,它会附加单词 'Controller' 并使用结果找到一个 class,继承自 Controller.

因此,例如:

一个link喜欢:

<li>@Html.ActionLink("Home", "Index", "HomeController")</li>

是对 MVC 的指令:

构建一个 hyperlink,文本为 "Home",指向从 Controller 继承的名为 'HomeControllerController' 的 class 中的 Action 'Index'。

如果您希望 link 指向名为 HomeController 的 Class,这是正确的 link:

<li>@Html.ActionLink("Home", "Index", "Home")</li>

这条指令告诉 MVC 在继承自 Controller 的名为 'HomeController' 的 Class 中找到 'Index' 动作。