[英]ASP.NET MVC Routing - Routing with optional parameters and friendly urls
我有一个搜索操作方法,目前可以接受5个可选参数作为其搜索条件。 我的主页上有一个快速搜索按钮,它向搜索操作方法提交GET请求。 我一切正常,但是我的网址是使用标准查询字符串语法(?x = x&y = y)生成的。
我想公开友好的url,但是我认为使用路由系统的唯一方法是添加每个可能的排列,因为所有参数都是可选的,听起来不太优雅。
那么,我还有其他路线吗? 可能是网址重写模块吗?
任何帮助将不胜感激。
选项1 :使用查询字符串。 在搜索页面上,友好的Urls没有什么比这更好的了。
/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)
如果可以,可以使用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
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.