我有一个页面路由像/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