2009-06-09 186 views
40

我有一個頁面路由像/Comments/Search/3其中我搜索並顯示線程「3」的所有評論。ASP.NET MVC:URL路由與查詢字符串

我添加了一個排序函數(按日期,作者等)。處理它的最好方法是什麼? /Comments/Search/3/Sort/Author/Comments/Search/3?sort=author

如何在MVC中自動處理querystring sort = author作爲參數?

謝謝

回答

57

我喜歡:/評論/搜索/ 3?sort = author。查詢字符串是傳遞編程參數的好地方,尤其是在參數(如本例中)對於搜索引擎優化目的不重要的情況下。如果參數具有某種語義含義作爲搜索詞,則第一個URL會更好。

在控制器的方法,你可以使用這樣的事情:

public ActionResult Search(int id, string sort) 

ASP.NET MVC將自動線了查詢字符串值,以你的方法的參數。

使用以下路線

routes.MapRoute(
        "Default",            // Route name 
        "{controller}/{action}/{id}",       // URL with parameters 
        new { controller = "Comments", action = "Search", id = "" } // Parameter defaults 
       ); 

/評論/搜索/ 3?排序=筆者將調用搜索(3, 「作者」)

/評論/搜索/ 3將調用搜索(3 ,NULL)

記住ID是強制性所以這個網址就會失敗: /評論/搜索

+0

我想我會去爲這個解決方案。如何路由它並設置默認值,因爲sort = 3是可選的? – pistacchio 2009-06-09 08:54:05

19

ASP.NET MVC將在查詢字符串的情況下自動處理它。您只需在您的操作中添加一個string sort參數。

哪個更好?我個人使用路徑來控制顯示的內容和查詢字符串來控制演示文稿(它是如何顯示,格式化的)。所以,爲了排序,我會使用querystring方法。但我認爲這兩種方法都不存在技術上的缺點。