[英]ASP.NET MVC: url routing vs querystring
我有一個頁面路由像/Comments/Search/3
,我搜索並顯示線程“3”的所有注釋。
我正在添加一個排序功能(按日期,作者等)。 處理它的最佳方法是什么? /Comments/Search/3/Sort/Author
or /Comments/Search/3?sort=author
?
如何在MVC中自動處理查詢字符串sort = author作為參數?
謝謝
我更喜歡:/ Comments / Search / 3?sort = author。 查詢字符串是傳遞編程參數的好地方,特別是如果參數(如本例中)對於SEO目的不重要。 如果參數具有某種語義含義作為搜索詞,則第一個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
);
/ Comments / Search / 3?sort = author將調用Search(3,“author”)
/ Comments / Search / 3將調用Search(3,null)
請記住,id是必需的,因此此URL將失敗:/ Comments / Search
ASP.NET MVC將在查詢字符串的情況下自動處理它。 您只需在操作中添加string sort
參數即可。
哪個更好? 就個人而言,我使用路徑來控制正在顯示的內容和查詢字符串來控制演示文稿 (如何顯示,格式化......)。 所以,為了排序,我會使用查詢字符串方法。 但我不認為這兩種方法都存在技術劣勢。
最好的辦法是添加一個路由規則來處理它。 這里有一篇方便的文章:
http://aspalliance.com/1525_ASPNET_MVC_Framework_Part_2_URL_Routing.2
然后你的URL會讀/ Comments / Search / 3 / Sort / Author
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.