QueryString中的模型?

时间:2010-12-26 19:40:06

标签: c# asp.net-mvc

所以,我在这里面临一个问题。我正在构建一个ASP.NET MVC应用程序,最后一步是实现一个使用多个过滤器来执行搜索的搜索页面功能。

我做了一个名为SearchModel的模型类,它有一些属性,其中em'是搜索过滤器的集合。问题出在搜索结果页面上。我需要将整个SearchModel保留为搜索条件和其他分页参数。我想添加下一页和上一页的链接以及类似的内容,只有GET请求才能提供。如果我启用GET,我会得到一个包含整个模型的HUGE查询字符串,如下所示:

Documents/Search?CriteriaFilters[0].Field=OwnerUserName&CriteriaFilters[0].Type=Text&CriteriaFilters[0].Text=albert.sheppard&CriteriaFilters[0].TextMatchMode=Exactly

这只是使用一个带有小标准文本的过滤器。当我使用10+过滤器时看起来很糟糕和讨厌。

您如何使用多个过滤器处理搜索和结果页面而不将整个模型解析为查询字符串?查询字符串加密?如果是这样,如何实现这一目标?

感谢。

2 个答案:

答案 0 :(得分:0)

我不了解ASP.NET MVC,但应该使用POST。我知道您的示例中有许多字段未使用,但它们可能具有值,并且GET的大小非常有限。或许您可以想出一种非常压缩的方式来表示您的标准。但是,POST还是要好得多。

答案 1 :(得分:0)

我使用MVC实现了搜索条件URL,如下所示:

acer notebook>>笔记本>> 15.6英寸>> Core 2 Duo

http://myserver/SearchApp/Search/4/acer%20notebook/1/50-97-77868%2c50-111-76631?sort=0&catGrp=50

private
ActionResult SearchAction
(
  int siteId,
  string query,
  int? page,
  string options,
  SortType sortType,
  int catGroupId
)
{
  // Search code implementation
}

以上网址和控制器翻译如下:

搜索 - 行动

4 - siteId

acer%20notebook - 查询

50-97-77868%2c50-111-76631 - options(以逗号分隔的选项列表),表示15.6in>> Core 2 Duo

0 - sortType

50 - catGroup

希望这会有所帮助。