我知道这是一般的方法:
routes.MapRoute
(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
但是如果我尝试这样做:
routes.MapRoute
(
name: "Defaults",
url: "Home/Index/1"
);
它不会给出任何错误来运行项目。我有Controller = Home
Action = Index()
在我的HomeController
,但为什么它给出错误,而我在浏览器中输入这个http://localhost:1702/Home/Index/1
?
错误:匹配的路由不包含"controller"路由值。
Routing中哪一部分是必需的?另一个问题是:为什么我们需要Route Name
?如果我输入name=""
,它可以正常工作即使存在多个路由,如name=""
你需要这个:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
url是为最终用户定义url结构。你甚至可以把它改成
url: "{action}/{controller}/{id}"
要理解哪个是控制器哪个是动作你必须提供url结构