我有一個頁面路由像/Comments/Search/3
其中我搜索並顯示線程「3」的所有評論。ASP.NET MVC:URL路由與查詢字符串
我添加了一個排序函數(按日期,作者等)。處理它的最好方法是什麼? /Comments/Search/3/Sort/Author
或/Comments/Search/3?sort=author
?
如何在MVC中自動處理querystring sort = author作爲參數?
謝謝
我有一個頁面路由像/Comments/Search/3
其中我搜索並顯示線程「3」的所有評論。ASP.NET MVC:URL路由與查詢字符串
我添加了一個排序函數(按日期,作者等)。處理它的最好方法是什麼? /Comments/Search/3/Sort/Author
或/Comments/Search/3?sort=author
?
如何在MVC中自動處理querystring sort = author作爲參數?
謝謝
我喜歡:/評論/搜索/ 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是強制性所以這個網址就會失敗: /評論/搜索
ASP.NET MVC將在查詢字符串的情況下自動處理它。您只需在您的操作中添加一個string sort
參數。
哪個更好?我個人使用路徑來控制顯示的內容和查詢字符串來控制演示文稿(它是如何顯示,格式化的)。所以,爲了排序,我會使用querystring方法。但我認爲這兩種方法都不存在技術上的缺點。
最好的辦法是增加一個路由規則來處理它。有它方便的文章在這裏:
http://aspalliance.com/1525_ASPNET_MVC_Framework_Part_2_URL_Routing.2
那麼你的URL會讀/評論/搜索/ 3 /排序/作者
我想我會去爲這個解決方案。如何路由它並設置默認值,因爲sort = 3是可選的? – pistacchio 2009-06-09 08:54:05