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

时间:2014-12-10 08:16:35

标签: c# asp.net-mvc t4 t4mvc

我想为我的行为生成常量网址。像这样:

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

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

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

2 个答案:

答案 0 :(得分:0)

来自Web应用程序

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

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

来自外部图书馆

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

如果您的项目没有MVC应用程序的知识,并且您希望有一个包含常量URL的文件,那么如果您的路由如下,它可以命中如何生成此文件:

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

答案 1 :(得分:0)

我为我的问题定制了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#>";
  <#}   
} #>
}