簡體   English   中英

ASP.NET MVC:url routing vs querystring

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM