我的页面路由类似/Comments/Search/3
,我搜索并显示线程“3”的所有注释。
我正在添加排序功能(按日期,作者等)。处理它的最佳方法是什么? /Comments/Search/3/Sort/Author
或/Comments/Search/3?sort=author
?
如何在MVC中自动处理querystring sort = author作为参数?
由于
答案 0 :(得分:59)
我更喜欢:/ 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是必需的,因此此网址将失败: /评论/搜索
答案 1 :(得分:19)
ASP.NET MVC将在查询字符串的情况下自动处理它。您只需在行动中添加string sort
参数即可。
哪个更好?就个人而言,我使用路径来控制正在显示的内容和查询字符串来控制演示文稿(如何显示,格式化......)。所以,为了排序,我会使用查询字符串方法。但我不认为这两种方法都存在技术劣势。
答案 2 :(得分:2)
最好的办法是添加路由规则来处理它。这里有一篇方便的文章:
http://aspalliance.com/1525_ASPNET_MVC_Framework_Part_2_URL_Routing.2
然后您的网址会显示/评论/搜索/ 3 /排序/作者