ASP.NET MVC: url routing vs querystring

房东的猫 提交于 2019-12-17 17:36:13

问题


I have a page routed like /Comments/Search/3 where i search and display all the comments of the thread "3".

I'm adding a sort function (by date, author etc). What is the best way to handle it? /Comments/Search/3/Sort/Author or /Comments/Search/3?sort=author ?

How do I automatically handle the querystring sort=author as a parameter in MVC?

Thanks


回答1:


I prefer: /Comments/Search/3?sort=author. The querystring is a good place to pass in programmatic parameters, especially if the parameter (like in this case) is not important for SEO purposes. If the parameter had some semantic meaning as a search term, the first URL would be better.

In a controller method you can use something like this:

public ActionResult Search(int id, string sort)

ASP.NET MVC will automatically wire up querystring values to the parameters of your method.

Use the following route

routes.MapRoute(
                   "Default",                                              // Route name
                   "{controller}/{action}/{id}",                           // URL with parameters
                   new { controller = "Comments", action = "Search", id = "" }  // Parameter defaults
               );

/Comments/Search/3?sort=author will call Search(3, "author")

/Comments/Search/3 will call Search(3, null)

Keep in mind that id is mandatory so this url will fail: /Comments/Search




回答2:


ASP.NET MVC will handle that automatically in the query string case. You just add a string sort parameter to your action.

Which is better? Personally, I use the path to control the contents being displayed and querystring to control the presentation (how it's displayed, formatted, ...). So, for sorting, I'd go with the querystring method. But I don't think there's a technical disadvantage in either approach.




回答3:


Your best bet is to add a routing rule to handle it. There's a handy article on it here:

http://aspalliance.com/1525_ASPNET_MVC_Framework_Part_2_URL_Routing.2

Then your URL would read /Comments/Search/3/Sort/Author



来源:https://stackoverflow.com/questions/968904/asp-net-mvc-url-routing-vs-querystring

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!