當我做@Html.ActionLink("About us", "About", "Home")
,應用程序如何知道控制器文件在Controllers\HomeController.cs
?我看到控制器文件夾分開,如'Views \ Home','Views \ Booking'等。但是,如何在指定的控制器名稱爲Home
時知道要查找Controllers\HomeController.cs
?由於visual studio生成的文件,我的代碼完美工作。但是,我想知道它背後的理論是什麼。請解釋一下,謝謝。當我執行ActionLink時,應用程序如何知道控制器類? ASP mvc
這裏是我的路由配置,
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 }
);
}
,這裏是我的HomeController,
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
}
一點也沒有「T。它只會生成鏈接'/ Home/About',而不關心該路由的控制器是否存在,如果存在,它來自哪個文件。它確實需要配置路線。 – CodeCaster
@CodeCaster我看,我的'/ home/About'是About.cshtml,這是否意味着它首先加載About.cshtml?出於某種原因,About.cshtml會給出控制器文件名?我已經更新了問題中的路由配置。請給你專家建議。謝謝! – user859385
連接在路由和控制器之間,視圖不起作用,它由控制器決定。在您的/ home/about-case中,控制器由「家」 - 您的路線部分確定。 MVC有一些固定的規則,比如將一個帶有控制器「Home」的路由轉換成一個使用HomeController類的路由(如果存在的話)。您可以在默認路由中看到URL的第一部分組成控制器名稱,第二部分爲操作名稱,最後一部分爲調用操作時使用的參數。 –