【问题标题】:How to config Asp.net 5 MVC routing like Drupal?如何像 Drupal 一样配置 Asp.net 5 MVC 路由?
【发布时间】:2017-02-26 02:18:32
【问题描述】:

我有一个使用 Drupal 的网站。 现在,我想使用 Asp.net MVC 建立一个类似的网站,但我无法像在 Drupal 中那样配置路由。

在 Drupal 中:

  1. /: 主页,默认语言:vi
  2. /{lang}:主页语言为 {lang}
  3. /{catePermanentLink}:列出分类的新闻文章,默认语言:vi
  4. /{lang}/{catePermanentLink}:以 {lang} 语言列出类别的新闻文章
  5. /{catePermanentLink}/{newsPermanentLink}:查看新闻详情,默认语言:vi
  6. /{lang}/{catePermanentLink}/{newsPermanentLink}:查看新闻详情,语言为 {lang}
  7. /{catePermanentLink_Level1}/{catePermanentLink_Level2}:列出分类的新闻文章,默认语言:vi
  8. /{lang}/{catePermanentLink_Level1}/{catePermanentLink_Level2}:以{lang}语言列出类别的新闻文章

如何在 Asp.net MVC 中进行配置。 非常感谢。

【问题讨论】:

  • 与每个相关的控制器方法是什么,您希望 url 看起来像什么?例如对于 5 号,您是否希望 ../fr/News/Detail/10(或者可能只是 ..fr/Details/10)在法语中显示带有 ID=10 的新闻项目的详细信息?
  • 这个问题对于那些不熟悉 Drupal 的人来说是相当模糊的,但是this answer 可能会让你朝着正确的方向前进。
  • {root}/{catePermanentLink}/{newsPermanentLink} ==> 默认语言的新闻详情。 {root}/fr/{catePermanentLink}/{newsPermanentLink} ==> FR 语言的新闻详情

标签: asp.net asp.net-mvc


【解决方案1】:

谢谢大家。我分享我的工作配置

//Ưu tiên Search
        routes.MapRoute(name: "search", url: "{lang}/search/{keyword}", defaults: new { controller = "search", action = "result" });

        //Normal with Language
        routes.MapRoute(
            name: "Language",
            url: "{lang}",
            defaults: new { controller = "Home", action = "Index", lang = UrlParameter.Optional },
            constraints: new { lang = @"(\w{2})" }
        );

        //News Category
        routes.MapRoute(
            name: "defaultLanguageWithCate",
            url: "{cateSlug}",
            defaults: new { lang = "vi", controller = "News", action = "NewsByCate" },
            constraints: new { lang = @"(\w{2})", controller = "News", action = "NewsByCate" },
            namespaces: new[] { "Frontend.Web.Controllers" }
          );

        routes.MapRoute(
            name: "languageWithCate",
            url: "{lang}/{cateSlug}",
            defaults: new { lang = "vi", controller = "News", action = "NewsByCate" },
            constraints: new { lang = @"(\w{2})", controller = "News", action = "NewsByCate" },
            namespaces: new[] { "Frontend.Web.Controllers" }
         );

        //News Detail
        routes.MapRoute(
           name: "defaultLanguageWithArticle",
           url: "{cateSlug}/{articleSlug}",
           defaults: new { lang = "vi", controller = "News", action = "Detail" },
           constraints: new { lang = @"(\w{2})", controller = "News", action = "Detail" },
           namespaces: new[] { "Frontend.Web.Controllers" }
        );

        routes.MapRoute(
             name: "languageWithArticle",
             url: "{lang}/{cateSlug}/{articleSlug}",
             defaults: new { lang = "vi", controller = "News", action = "Detail" },
             constraints: new { lang = @"(\w{2})", controller = "News", action = "Detail" },
             namespaces: new[] { "Frontend.Web.Controllers" }
       );

        //Không có Language
        routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, lang = "vi" }
          );

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 2017-07-12
    • 2021-04-23
    • 1970-01-01
    • 2016-01-07
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多