ASP.NET MVC:URL路由与查询string
我有一个页面路由/Comments/Search/3
,其中我search和显示线程“3”的所有评论。
我添加一个sortingfunction(按date,作者等)。 处理它的最好方法是什么? /Comments/Search/3/Sort/Author
或/Comments/Search/3?sort=author
?
如何自动处理查询stringsorting=作为MVC中的参数?
谢谢
我更喜欢:/评论/search/ 3?sorting=作者。 查询string是传递编程参数的好地方,特别是如果参数(如本例中)对于search引擎优化目的不重要。 如果该参数具有某个search词的语义含义,则第一个URL会更好。
在一个控制器的方法,你可以使用这样的东西:
public ActionResult Search(int id, string sort)
ASP.NET MVC会自动将querystring值连接到方法的参数。
使用以下路线
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”)
/评论/search/ 3将调用search(3,null)
请记住,ID是强制性的,所以这个url将失败:/评论/search
ASP.NET MVC将在查询string的情况下自动处理。 您只需为您的操作添加一个string sort
参数。
哪个更好? 就个人而言,我使用path来控制正在显示的内容和querystring来控制演示文稿 (如何显示,格式化…)。 所以,为了sorting,我会用查询string方法。 但我不认为这两种方法都有技术上的缺点。
你最好的select是添加一个路由规则来处理它。 这里有一个方便的文章:
http://aspalliance.com/1525_ASPNET_MVC_Framework_Part_2_URL_Routing.2
那么你的url就会显示/评论/search/ 3 /sorting/作者