Asp.net mvc ASP.NET MVC:url路由与查询字符串
我有一个类似于Asp.net mvc ASP.NET MVC:url路由与查询字符串,asp.net-mvc,routing,query-string,Asp.net Mvc,Routing,Query String,我有一个类似于/Comments/Search/3的页面,在这里我搜索并显示线程“3”的所有注释 我正在添加一个排序函数(按日期、作者等)。最好的处理方法是什么/Comments/Search/3/Sort/Author或/Comments/Search/3?Sort=Author 如何在MVC中将querystring sort=author作为参数自动处理 谢谢ASP.NET MVC将在查询字符串大小写中自动处理该问题。只需将字符串排序参数添加到操作中 哪个更好?就我个人而言,我使用路径来控
/Comments/Search/3
的页面,在这里我搜索并显示线程“3”的所有注释
我正在添加一个排序函数(按日期、作者等)。最好的处理方法是什么/Comments/Search/3/Sort/Author
或/Comments/Search/3?Sort=Author
如何在MVC中将querystring sort=author作为参数自动处理
谢谢ASP.NET MVC将在查询字符串大小写中自动处理该问题。只需将
字符串排序
参数添加到操作中
哪个更好?就我个人而言,我使用路径来控制显示的内容,使用查询字符串来控制演示文稿(它的显示方式、格式等)。因此,对于排序,我将使用querystring方法。但我不认为这两种方法在技术上都有缺点。我更喜欢:/Comments/Search/3?sort=author。querystring是传递编程参数的好地方,特别是当参数(如本例中的参数)对于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=作者将调用Search(3,“作者”)
/注释/Search/3将调用Search(3,空)
请记住,id是必需的,因此此url将失败:
/评论/搜索您最好的选择是添加路由规则来处理它。这里有一篇关于它的便利文章:
然后你的URL会读/Comments/Search/3/Sort/Author我想我会选择这个解决方案。如何路由它并设置默认值,因为sort=3是可选的?由于配置上的约定,请记住方法的参数必须分别称为“id”和“sort”。在MVC 2中,您可以使用UrlParameter。可选参数和实际参数使用
int?id
而不是int id
,如果您希望它是可选的,并且/Comments/Search
显示带有空输入文本的默认搜索UI。