MVC高级路由

时间:2009-12-05 02:35:31

标签: url routing url-routing

我正在尝试路由一个没有静态操作的URL,即用户可以创建可以用任何字符串表示的系统。我想要一个如下的URL:

http://yousite.com/System/WIN1234/Configure

默认情况下,路由机制认为WIN1234是动作,而我希望能够捕获WIN1234并决定抛出哪种方法。如:

public void RouteSystemRequest(string system, string action)
{

  switch (action)
  {

    case "Configure":

        ConfigureSystem(string system);
        break;

  }

}

我怎样才能做到这一点?这是合乎逻辑的还是我认为这一切都错了?

1 个答案:

答案 0 :(得分:1)

您需要做的是什么。您需要设置指向系统操作的默认路由,并且您需要接受其他值作为操作的参数。

    //General
    routes.MapRoute(
        "Default7",                                              // Route name
        "{action}/{param1}/{param2}",                           // URL with parameters
        new { controller = "Home", action = "Index", param1 = "", param2 = "" }  // Parameter defaults
    );

在您的代码中,您将获得值Win1234和配置为默认值。

然后,您可以实现切换逻辑并使用RedirectToAction移动到您想要的操作。