【问题标题】:MVC Routes - Urls based on fixed list of parametersMVC 路由 - 基于固定参数列表的 URL
【发布时间】:2017-02-06 13:12:05
【问题描述】:

我有一大组需要 301 重定向的 URL。我已经为各种 301 设置了许多路由作为“捕获”,但我似乎以某种方式创建了一个重定向循环。

有人可以确认 - 以下是一个有效的 url 并强制参数 ONLY 来自管道分隔列表(即,如果值不匹配,则路由不会捕获)

routes.MapRoute("MyRouteName", // Route name
    "first-folder/second-folder/{param1}", // URL with parameters
    new
    {
        controller = "Redirect",
        action = "MyRedirectHandler",
        newRouteName = "mynewroute",
        folder1= "foo",
        folder2 = "bar",
        set = "option1|option2|option3"
    });

所以,在这种情况下:

mysite.com/first-folder/second-folder/option1 => mysite.com/mynewroute/foo/bar

mysite.com/first-folder/second-folder/option2 => mysite.com/mynewroute/foo/bar

mysite.com/first-folder/second-folder/option88 => 404

set 中的参数仅用于捕获 url,我的 MyRedirectHandler 是一个控制器操作,它将对我在 newRouteName 中指定的路由执行 301。

【问题讨论】:

    标签: asp.net-mvc redirect


    【解决方案1】:

    好的, 我发的太早了。对于遇到类似问题的任何人,此循环归结为 Route 参数默认值和参数约束之间的差异。上面的例子应该是:

    routes.MapRoute("MyRouteName", // Route name
      "first-folder/second-folder/{param1}", // URL with parameters
    new
    {
        controller = "Redirect",
        action = "MyRedirectHandler",
        newRouteName = "mynewroute",
        folder1= "foo",
        folder2 = "bar" 
    },  //param defaults
    new {
        set = "option1|option2|option3"
    } //param constraints
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      相关资源
      最近更新 更多