当我@Html.ActionLink("About us", "About", "Home")
时,应用程序如何知道控制器文件位于Controllers\HomeController.cs
?我看到控制器文件夹已分开,例如' Views \ Home',' Views \ Booking' 等。但是,它如何知道查找{{1}当指定的控制器名称是Controllers\HomeController.cs
时?由于visual studio的生成文件,我的代码完美无缺。但是,我想知道它背后的理论是什么。请解释一下,谢谢。
这是我的路线配置,
Home
这是我的HomeController,
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
答案 0 :(得分:1)
基本上,它都是.net mvc这样做的。因此,当你为ActionLink提供它时,它知道" Home"是一个控制器,它包含一个名为About的功能。
什么时候调用函数来渲染某些东西; DefaultControllerFactory .net mvc的使用将足以确定给定的控制器缺少单词" Controller",因此它将在调用之前附加它。
我在过去曾经使用过如何覆盖DefaultControllerFactory的非常好的指南: https://www.codeproject.com/Articles/599189/DefaultControllerFactory-in-ASP-NET-MVC
这可能会让您更好地了解幕后发生的事情:)