C# ASP MVC 5路由映射
在我的视图文件夹中我有一个“用户”文件夹,它不包含相应的视图,但包含将包含视图的子文件夹 例如:C# ASP MVC 5路由映射,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,在我的视图文件夹中我有一个“用户”文件夹,它不包含相应的视图,但包含将包含视图的子文件夹 例如: User Create create.cshtml Edit edit.cshtml 然后我有一个控制器,目前只有一个用于创建的操作: public ActionResult Create() { return View("Create/Create"); } 因此,要点击该操作,我转到user/create,它返回的视图很好 当我试图使用Url.RouteUrl在标记中
User
Create
create.cshtml
Edit
edit.cshtml
然后我有一个控制器,目前只有一个用于创建的操作:
public ActionResult Create() {
return View("Create/Create");
}
因此,要点击该操作,我转到user/create
,它返回的视图很好
当我试图使用Url.RouteUrl
在
标记中链接到该视图时,就会出现问题。它错误地说:
在路由集合中找不到名为“用户/创建”的路由
但对我来说,它与路由配置中的默认路由相匹配:controller/action
这是我的路线图:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Turn on attribute routing in the controllers
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home", action = "Index", id = UrlParameter.Optional
}
);
}
那么为什么我需要为它定义自定义路由呢?您不需要为它定义自定义路由,但需要遵循文件夹的约定。将create.cshtml和edit.cshtml视图直接放在用户文件夹中,删除create和edit子文件夹,您不需要它们 现在,在控制器中,您只需使用:
public ActionResult Create() {
return View();
}
它知道要查找什么以及在哪里找到它,因此它将成功地选择您的User/create.cshtml视图。然而,我们通常将模型传递给我们的视图。在类似Create的视图中,模型用于构建所有控件(文本框、标签等):
public ActionResult Create() {
var model = new UserViewMode();
return View(model);
}