【问题标题】:MVC routes with dynamic values具有动态值的 MVC 路由
【发布时间】:2015-07-16 11:57:31
【问题描述】:

我在 MVC 路线上苦苦挣扎 我想获取以下网址;

  1. example.com/sector/
  2. example.com/sector/ddmmyyy/
  3. example.com/sector/ddmmyyy/article-with-seo-url/

所有 3 个值都是动态的(部门/日期/SEOURL)。

我可以让 No.1 (/sectors/) 与:

routes.MapRoute(
  "sectors",
  "{seourl}",
  new { controller = "NewsArticle", action = "sectors" }
);

但是我不确定如何获取其他 2 个动态值的路由。

谢谢

汤米

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 routes url-routing


    【解决方案1】:

    您可能希望为DateSEOURL 指定默认值:

    routes.MapRoute(
       "sectors",
       "{sectorName}/{date}/{seourl}",
       new { constroller = "NewsArticle", action = "sectors",
             date = 0, seourl = string.Empty },
       new { date = "\d+" });
    

    如果你去http://www.example.com/apple,那么:

    • sectorName = 苹果
    • 日期 = 0
    • seourl = ""(空字符串)

    如果你去http://www.example.com/apple/240514,那么:

    • sectorName = 苹果
    • 日期 = 240514
    • seourl = ""(空字符串)

    您的sectors 操作应该有以下签名:

    public ActionResult sectors(string sectorName, int date, string seourl)
    

    而且(以防万一),我也会为动作的参数分配默认值:

    public ActionResult sectors(string sectorName, int date = 0, string seourl = string.Empty);
    

    【讨论】:

    • 将日期作为字符串在操作方法中进行处理会更容易。
    • @buffjape 如果是整数,路由处理程序更容易验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多