创建自定义路由层次结构.asp.net MVC 5
本文关键字:net MVC asp 层次结构 自定义 路由 创建 | 更新日期: 2023-09-27 17:49:35
我当前的url路由是:
website.com/start/id
website.com/upload/id
这些路由是向导步骤。控制器命名为StartController, UploadController
视图结构命名为~Views/Start/Index.cshtml, ~/Views/Upload/Index.cshtml
客户端请求url结构为:
website.com/build/start/id
website.com/build/upload/id
愿望:
我不想使用"虚荣url",因为我想使用@Html。ActionLink和@Url。动作来尽可能地呈现我的url,这样我就可以在以后重命名控制器和控制器方法,并使它们"连接"@Html。ActionLink和@Url。行动更新。
我确实想有我所有的方法在一个单一的父buildcontroller引用嵌套视图文件夹结构我的控制器方法返回以下视图:
return View("~/Views/Build/Start/Index.cshtml")
。我想让我的视图物理结构映射/匹配到我的控制器命名约定所以返回View();
我的问题:
有没有办法,我可以尊重我的"愿望"上面,实现这个自定义Url结构,而不必创建一个BuildController,包含我的StartController方法和我的UploadController方法?
我没有问题创建一个BuildController或改变我的视图文件夹和/或控制器的物理结构,但我要尊重@Url.Action("Start", "Build")
的能力,而不必在我的代码"build/start
"中写"手动",更重要的是,保持我的StartController
和UploadController
代码,因为我不想在我的BuildController长大量的代码。
我会切换到属性例程。你必须把ActionLink方法改成RouteLink方法,但它的工作原理是一样的。
添加属性
[Route("build/start/{id:int}", Name = "WizardStep1")]
为每个控制器方法(适当地改变路由)。
生成一个链接,使用RouteLink:
@Html.RouteLink("WizardStep1", ...)
替换…使用额外的代码,您需要设置URL属性。