2011-03-23 125 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