我有以下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的方法,但是它们永远不会被触及
答案 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'动作。