gpt4 book ai didi

c# - ASP MVC 5 路由映射

转载 作者:太空宇宙 更新时间:2023-11-03 12:15:49 26 4
gpt4 key购买 nike

在我的 View 文件夹中,我有一个“用户”文件夹,它不包含相应的 View ,但包含将包含 View 的子文件夹。

例子:

User
Create
create.cshtml
Edit
edit.cshtml

然后我有一个 Controller ,目前只有一个创建操作:

public ActionResult Create() {
return View("Create/Create");
}

因此,为了执行该操作,我转到 user/create ,然后返回 View 。

问题出在我试图链接到 <a> 中的那个 View 时。使用 Url.RouteUrl 标记.它出错并说:

A route named 'user/create' could not be found in the route collection

但对我来说,它匹配路由配置中的默认路由: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 View 直接放在 User 文件夹中,并删除 Create 和 Edit 子文件夹,您不需要它们。

现在,在 Controller 中,您可以简单地使用:

public ActionResult Create() {
return View();
}

它知道要寻找什么以及在哪里找到它,所以它会成功地选择您的 User/create.cshtml View 。但是,我们通常将模型传递给我们的 View 。在像 Create 这样的 View 中,模型用于构建所有控件(文本框、标签等):

public ActionResult Create() {
var model = new UserViewMode();
return View(model);
}

关于c# - ASP MVC 5 路由映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49835117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com