如何为我的 ASP.NET MVC 操作生成常量 URL

本文关键字:操作 常量 URL MVC NET 我的 ASP | 更新日期: 2023-09-27 18:33:44

我想为我的操作生成常量 url。像这样:

public const string ControllerName_ActionName = "/ControllerName/ActionName";

我尝试使用 T4MVC,但它只生成具有T4MVC_System_Web_Mvc_ActionResult的方法。有没有没有痛苦的解决方案?

我想在外部项目中将它们用作库。该项目不知道我的 MVC 应用程序。它可以是带有 WebClient 的简单控制台应用程序。

如何为我的 ASP.NET MVC 操作生成常量 URL

在 Web 应用程序内

T4MVC还为Url.Action()生成了新的扩展方法。例如,现在您可以使用这样的东西:

return Redirect(Url.Action(MVC.Account.Index()));

从外部库

T4MVC 仅生成常量,因此您可以确定在编译时将正确生成运行时的路由。生成包含 url => Controller.Action 之类的文件并不容易,因为这取决于您的路由配置、url 通配符、排序、http 协议等。

如果您的项目不了解 MVC 应用程序,并且您希望拥有一个包含常量 url 的文件,如果您的路由如下,则可能会命中如何生成此文件:

      routes.MapRoute(
          name: "Catch-all content route",
          url: "{*url}",
          defaults: new { controller = "ContentPage", action = "Index" }

我已经为我的问题定制了 T4MVC 模板:

public static class UrlConst {
<#foreach (var controller in DefaultArea.GetControllers()) {
    foreach (var action in controller.ActionMethods.ToList())
    { #>
    public const string <#=controller.Name#>_<#=action.ActionName#> =
        "/<#=controller.Name#>/<#=action.ActionName#>";
  <#}   
} #>
}