【问题标题】:MVC Routing parameters with Hyphen带连字符的 MVC 路由参数
【发布时间】:2014-09-22 00:58:38
【问题描述】:

我们正在将旧网站重建为新的 MVC 网站,我想将旧网址重定向到新网址。

旧网址是这样构建的 /p-{productid}-{productname}.aspx 但是 productname 参数也可能包含连字符。所以网址可能是/p-123-product-name.aspx

如果我将此规则添加到 mvc RouteCollection,第一个参数值将是:

productid = 123-产品

产品名称 = 名称

有没有办法让 productid 参数“不贪心”?

【问题讨论】:

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


    【解决方案1】:

    您可以在路由中添加约束,并使用正则表达式来指定 id。假设您要去一个名为“products”的控制器,并且视图名为 ShowProdcut,并且 id 包含 3 个或更多数字,您的路线可能如下所示:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            name: "Products",
            defaults: new {controller = "Products", action = "ShowProduct"},
            url: "Products/p-{productId}-{productName}",
            constraints: new {productId= @"\d{3,}"}
        );
    }
    

    显然,如果您的 id 更复杂,您将需要不同的正则表达式。

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 2020-11-15
      • 1970-01-01
      • 2011-09-25
      • 2015-12-01
      • 2012-04-01
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多