我有一个搜索操作方法,此时会接受5个搜索条件的可选参数。 我的主页有一个快速搜索按钮,用于向搜索操作方法提交GET请求。我拥有了一切 工作正常,但我的网址是使用标准的查询字符串语法生成的(?x = x& y = y)。
我想公开友好的网址,但我认为使用路由系统的唯一方法是 添加每个单独的排列,因为所有参数都是可选的,听起来不是很好 优雅。
那么有没有其他路线(没有双关语:) :)我可以采取?可能是Url重写模块吗?
非常感谢任何帮助。
答案 0 :(得分:0)
选项1 :与查询字符串一起生活。友情网址在搜索页面上没什么了不起的。
/search?q=url+routing
选项2 :允许最多一个可选参数成为“友好”网址的一部分。必须在查询字符串中传递任何其他参数。例如:
/search/query/url+routing (1 parameter)
/search/query/url+routing?tagged=asp.net (2 parameters)
/search/query/url+routing?tagged=asp.net&sort=date (3 parameters)
答案 1 :(得分:0)
如果您使用http://mysite.com/search/{term-1}/{term-n}/{term-n+1}
等网址,则可以设置路线:
routes.MapRoute(
name: "SearchRoute",
url: "search/{*terms}",
defaults: new { controller = "MySearchController", action = "MySearchAction" }
);
在您的操作中,您将收到一个字符串,该字符串将/
与您的所有搜索字词分隔开来。 (URL可能没有多大意义,但您可以使用它。)
public class SearchController : Controller
{
public ActionResult SearchAction (string terms)
{
foreach (var term in terms.Split ('/'))
{
// Do something
}
}
}