映射视图到控制器不工作

时间:2015-02-13 22:23:34

标签: c# asp.net-mvc razor

我有以下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类&#39;相关方法如下:

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

        return View();
    }

现在我的问题是当我点击我的标签/动作链接时没有任何反应。 我期待这样:<li>@Html.ActionLink("About", "About", "HomeController")</li>表现得像普通的<a href="...">...</a>,并带我到引用的视图。我错过了什么吗?

我试图在Controller类中使用断点来查看是否应该调用应该返回Views的方法,但是它们永远不会被触及

1 个答案:

答案 0 :(得分:3)

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

在您的特定情况下,问题出在控制器的约定中。每当MVC找到一个应该指向控制器的“魔术字符串”时,它会附加单词“Controller”并使用结果来查找继承自Controller的类。

所以,例如:

像:

这样的链接
<li>@Html.ActionLink("Home", "Index", "HomeController")</li>

是指向MVC的指令:

构建一个以“Home”为文本的超链接,指向一个名为“HomeControllerController”的类中的Action'Index',该类继承自Controller。

如果您希望链接指向名为HomeController的类,则这是正确的链接:

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

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