2011-04-04 101 views
1

在global.asax.cs中註冊路由時,如何更改url參數的順序?如何更改MVC3中routes.MapRoute的順序?

我註冊的路線,像這樣:(注:我也有註冊,以及默認的MVC3路線)

routes.MapRoute(
    "SurveyWizard", 
    "survey/{id}/{action}", 
    new { id = UrlParameter.Optional, action = "AddQuestions" }); 

我的控制器:

public ActionResult AddQuestions(int id) 
{ 
    if(id < 1 || id == null) 
    //Redirect somewhere 
    var survey = _surveyService.GetSurveyById(id); 
    //other controller logic 
    return View(survey); 
} 

當我鍵入網址.../survey/1/AddQuestions找不到資源。當我運行路由調試器時,路由顯示爲有效。

這是甚至可能在MVC3?我知道在Restful WCF中,你可以像這樣構造路線沒問題。在我可能與{controller}/{action}/{id}一起生活的宏偉計劃中,但我相信只在必要時才使用動詞,在我的情況下,正確的url應該按照上面的示例進行構造。

任何想法?謝謝。

回答

3

您的路線缺少默認的控制器,如:

routes.MapRoute(
    "SurveyWizard", 
    "survey/{id}/{action}", 
    new { controller="Survey", action="AddQuestions" }); 

還有一點你應該知道的是,默認的死記硬背應該是最後一個......

+0

感謝CD。就是這樣!我不小心從我的代碼中省略了我的控制器。這是問題的默認路線的順序。再次感謝。 – trevorc 2011-04-04 18:08:02