加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC处理程序,用于未知数量的可选参数

发布时间:2020-12-16 09:32:21 所属栏目:asp.Net 来源:网络整理
导读:我正在使用MVC路由,它将在URL的末尾获取未知数量的参数.像这样的东西: domain.com/category/keyword1/keyword2/…/keywordN 这些关键字是我们必须匹配的过滤器的值. 到目前为止,我能想到的唯一方法是UGLY ……只需创建一个ActionResult,其参数多于我可能需
我正在使用MVC路由,它将在URL的末尾获取未知数量的参数.像这样的东西:

domain.com/category/keyword1/keyword2/…/keywordN

这些关键字是我们必须匹配的过滤器的值.

到目前为止,我能想到的唯一方法是UGLY ……只需创建一个ActionResult,其参数多于我可能需要的参数:

ActionResult CategoryPage(字符串urlValue1,字符串urlValue2,字符串urlValue3等…)
{
}

这感觉不对劲.我想我可以将它们塞进一个查询字符串中,但后来我丢失了性感的MVC URL,对吧?有没有更好的方法来声明处理程序方法,以便它处理未知数量的可选参数?

必须在Application Start上连接路由,这应该不是那么难.关键字的最大数量可以很容易地从数据库中确定,因此没有大问题.

谢谢!

解决方法

你可以使用像这样的catch-all参数:

routes.MapRoute("Category","category/{*keywords}",new { controller = "Category",action = "Search",keywords = "" });

然后,您的搜索操作方法中将有一个参数:

public ActionResult Search(string keywords)
{
    // Now you have to split the keywords parameter with '/' as delimiter.
}

以下是可能的URL列表,其中包含keywords参数的值:

http://www.example.com/category(关键字:“”)
http://www.example.com/category/foo(关键字:“foo”)
http://www.example.com/category/foo/bar(关键字:“foo / bar”)
http://www.example.com/category/foo/bar/zap(关键字:“foo / bar / zap”)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读