2011-03-23 104 views
0

我试图放入一些新的路线,但不知道从哪里开始。我想这样做是有我的路线翻译如下:MVC 3路线问题

/transport class A/23 translated to /info/classes/A-23 

我了解使用图路线的基础知识,但我不喜欢的东西上面?

我希望有人能给出建议。

回答

0

在我看来,你实际上是在类似UrlRewrite之后,因为你要从一个Url到另一个Url。

但是MVC不会重写URL - 它会根据您提供的路由模式将它们映射到控制器操作。因此,如果你问是否可以将第一个URL分割成控制器/操作对(带参数),那么你当然可以。您只需在正确的位置设置具有必要参数的路线。所以,你可以调用MapRoute喜欢的东西(我会用空格连字符):

/*route pattern:*/ "transport-class-{class1}/{class2}" 
/*with route defaults:*/ new { controller = "Info", action = "ViewInfo" } 

然后,你可以写出如下控制器:

public class InfoController : ControllerBase 
{ 
    public ActionResult ViewInfo(string class1, string class2) 
    { 
    //presumably get model data from the class parameters here 
    //and pass it as parameter to below: 
    return View(); 
    } 
} 

虽然它也将取决于如果transportclass这条路线上的常量实际上也是可变的我猜 - 在这种情况下,您可以将这些常量作为路径参数推入,并放入控制器方法的参数列表中。

+0

感谢您的建议。我现在会试试这个。 – 2011-03-23 11:48:07

+0

非常感谢 – 2011-03-23 12:44:05

+0

@Miguel Campos - 很高兴能有所帮助:) – 2011-03-23 13:03:02