MVC3 MapRoute问题

时间:2011-03-24 13:40:05

标签: asp.net-mvc model-view-controller asp.net-mvc-3 asp.net-mvc-routing

我创建了以下路线:

routes.MapRoute(
    "TestRoute4", // Route name
    "Report {ref_id} Test Board", // URL with parameters
    new { controller = "stats", action = "index" } // Parameter defaults
);

public ActionResult index(string ref_id)
{
}

这很好但我现在希望我的控制器知道它是从匹配Report 25 Test Board的路线调用的。在MapRoute中是否还有一种方法可以将其他东西传递给控制器​​?我甚至不介意硬编码。我只想传递报告和测试委员会的话。

希望你能提供帮助,

曼迪

1 个答案:

答案 0 :(得分:3)

使用DataTokens

Route route = routes.MapRoute(
    "TestRoute4", // Route name
    "Report {ref_id} Test Board", // URL with parameters
    new { controller = "stats", action = "index" } // Parameter defaults
);

route.DataTokens["YourKey"] = "your value";

在您的控制器上,您可以执行以下操作:

public ActionResult Index() {

   // check if matched route is TestRoute4 (optional)
   if (this.RouteData.Route == RouteTable.Routes["TestRoute4"]) {
      // do something

      var val = this.RouteData.DataTokens["YourKey"];
   }

}