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/作者