【问题标题】:Route aliasing in ASP.MVC 4ASP.MVC 4 中的路由别名
【发布时间】:2012-08-13 20:27:53
【问题描述】:

是否可以在 ASP.NET MVC4 中动态地为路由命名?

基本上在 WebForms 中我使用的是这样的:

foreach (var rule in rules)
{
    routes.MapPageRoute("_" + rule.Url, rule.Url, rule.Redirect);
}

并从数据库中填充规则。

我需要允许客户端从 CMS 重命名路由(或进行重定向)。

谢谢。

【问题讨论】:

    标签: asp.net routing asp.net-mvc-4


    【解决方案1】:

    坦率地说,动态路由别名在 ASP.NET MVC 中是一个困难的过程。创建具有动态约束的单个路由可能是更优雅的解决方案。这需要设置一个仅与您的类别匹配的约束。

    routes.MapRoute(
        "Product",
        "{alias}/{pageNumber}",
        new { controller = "Products", action = "Choose", alias = UrlParameter.Optional, pageNumber = 1 },
        new { alias = new ProductOptionCondition() } );
    

    上面的动态自定义分页使用的是动态路由别名选项。你具体做了什么。您能否解释一下对此的任何具体要求,除非它可以通过 MVC-4 提供的默认路由选项进行管理。

    【讨论】:

    • 谢谢,问题是我们正在使用开发人员友好的路线(英语、有组织的等)构建网站,客户可以通过管理界面更改这些路线以满足他们的需求,例如 ~/account/注册路线,他可能想要一个别名 ~/register-new-account (但使用不同的语言)。所有路线都必须是动态的,因为它们可能会经常更改。
    • MVC 使用了大量的反射。路由是帮助识别您的方法的过程。如果您使用反射重新命名或别名任何这些方法,那么这可能没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多