2011-03-20 136 views
0

嗨,MVC和強類型視圖路由?

說我有一個操作返回到強類型視圖。這種類型也是行動的參數。要設置當前頁碼(對於頁面上的列表),我需要設置Model.ALS.P(我們的強類型)。

向服務器發送請求時,quarystring myComputer.com/MyController/MyAction?ALS.P=2會將傳入對象上的ALS.P設置爲2。

如果我想將其轉換爲以下URL:myComputer.com/MyController/MyAction/2路線將如何顯示?

我已經試過這樣:

routes.MapRoute(
       "List", // Route name 
       "{controller}/{action}/{ALS_P}", // URL with parameters 
       new { controller = "Ad", action = "List", ALS_P = 0 } // Parameter defaults 
      ); 

但是,這並不工作,它不會接受ALS.P作爲參數名稱。

BestRegards

回答

1

你知道你定義路線是一樣的在asp.net mvc的默認路由?這意味着,如果你沒有刪除默認的路由定義,你永遠不會被打。

您應該保留默認路由,並創建一個自定義模型綁定器,將id路由參數綁定到模型的相應屬性。有關更多詳細信息,請參閱this question

否則,還有routedebugger(可從nuget獲得),它可以讓您更深入地瞭解您的路線以及它們如何(何時)被擊中。

+0

好吧,讓ALS_P/ID綁定到我的Model.ALS.P我必須擴展DefaultModelBinder? – Banshee 2011-03-20 15:35:46

+0

您必須創建一個自定義的ModelBinder。這可以通過從DefaultModelBinder得到yes來完成,並且在這種情況下推薦使用,但這並不是必須的,因爲您也可以實現IModelBinder接口,但是您必須做更多的工作。 – fretje 2011-03-20 16:11:56