当我做ActionLink时,应用程序如何知道控制器类? ASP mvc

时间:2017-02-05 15:40:59

标签: c# asp.net-mvc

当我@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 }
        );
    }

1 个答案:

答案 0 :(得分:1)

基本上,它都是.net mvc这样做的。因此,当你为ActionLink提供它时,它知道" Home"是一个控制器,它包含一个名为About的功能。

什么时候调用函数来渲染某些东西; DefaultControllerFactory .net mvc的使用将足以确定给定的控制器缺少单词" Controller",因此它将在调用之前附加它。

我在过去曾经使用过如何覆盖DefaultControllerFactory的非常好的指南: https://www.codeproject.com/Articles/599189/DefaultControllerFactory-in-ASP-NET-MVC

这可能会让您更好地了解幕后发生的事情:)