gpt4 book ai didi

c# - 创建自定义路由层次结构 ASP.NET MVC 5

转载 作者:行者123 更新时间:2023-11-30 21:58:08 27 4
gpt4 key购买 nike

我当前的 url 路由是:

website.com/start/id
website.com/upload/id

这些路线是向导步骤。我的 Controller 名为 StartController、UploadController,我的 View 结构为 ~Views/Start/Index.cshtml、~/Views/Upload/Index.cshtml

客户已请求他希望 url 结构为:

website.com/build/start/id
website.com/build/upload/id

愿望:

  • 我不想使用“vanity url”,因为我想尽可能使用@Html.ActionLink 和@Url.Action 来呈现我的 url,这样我以后就可以重命名 Controller 和 Controller 方法,并让那些“已连接”@Html.ActionLink 和@Url.Action 更新。

  • 我确实希望我的所有方法都在一个引用嵌套 View 文件夹结构的单父 BuildContoller 中,我的 Controller 方法返回以下 View :return View("~/Views/Build/Start/索引.cshtml")。我希望能够让我的 View 物理结构映射/匹配我的 Controller 命名约定,因此 return View();在 Controller 方法中工作。

我的问题:

有没有什么方法可以尊重我上面的“愿望”并实现这个自定义 Url 结构,而不必创建一个包含我的 StartController 方法和我的 UploadController 方法的 BuildController?

我在创建 BuildController 或更改我的 View 文件夹和/或 Controller 的物理结构时没有问题,但我想尊重 @Url.Action("Start", "Build") 的能力而不必在我的代码“build/start”中“手动”编写,更重要的是,保留我的 StartControllerUploadController 代码,因为我不希望我的 BuildController 中有一大堆代码。

最佳答案

我会切换到属性例程。您必须将 ActionLink 方法更改为 RouteLink 方法,但它的工作方式相同。

添加属性

[Route("build/start/{id:int}", Name = "WizardStep1")]

对于每个 Controller 方法(适本地更改路由)。

要生成链接,请使用 RouteLink:

@Html.RouteLink("WizardStep1", ...)

将 ... 替换为设置 URL 属性所需的附加代码。

关于c# - 创建自定义路由层次结构 ASP.NET MVC 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30283086/

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