繁体   English   中英

ASP.NET MVC路由-使用可选参数和友好的url进行路由

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM