【发布时间】:2012-06-23 18:19:27
【问题描述】:
这是我的问题。我有一个 SearchViewModel 有大量搜索条件,这些值根本不适合 URL。我目前正在使用Troy Goode's Html.PagedListPager,但它被设计为使用Url.Action() 来发送URL 中的参数。这是一个例子。我不认为客户端过滤是一个选项,因为我会有很多记录。
@Html.PagedListPager(
(IPagedList)@Model.SearchResults,
page => Url.Action("Results",
new {
YearBuiltFrom = Model.YearBuiltFrom,
}
))
}
如果您只有一两个简单参数,这是一个很好的解决方案。
搜索视图模型
public class SearchViewModel
{
public int? page { get; set; }
public int? size { get; set; }
[IgnoreDataMember]
public IPagedList<Property> SearchResults { get; set; }
public string[] Locations { get; set; }
[IgnoreDataMember]
public MultiSelectList LocationOptions { get; set; }
public string[] ZipCodes { get; set; }
[IgnoreDataMember]
public MultiSelectList ZipCodeOptions { get; set; }
[Display(Name="Year Built")]
public int? YearBuiltFrom { get; set; }
[Display(Name = "Year Built")]
public int? YearBuiltTo { get; set; }
public int? SqftFrom { get; set; }
public int? SqftTo { get; set; }
public string Bedrooms { get; set; }
public string Bathrooms { get; set; }
[DataType(DataType.Date)]
public DateTime? SalesFrom { get; set; }
[DataType(DataType.Date)]
public DateTime? SalesTo { get; set; }
public int? SaleAmountFrom { get; set; }
public int? SaleAmountTo { get; set; }
public int? LandAreaFrom { get; set; }
public int? LandAreaTo { get; set; }
public string[] Waterfront { get; set; }
[IgnoreDataMember]
public MultiSelectList WaterfrontOptions { get; set; }
//TODO: Implement LandAreaType as a search parameter
//public string LandAreaType { get; set; }
public Boolean? IsVacant { get; set; }
public string[] PropertyFeatures { get; set; }
[IgnoreDataMember]
public MultiSelectList PropertyFeatureOptions { get; set; }
}
【问题讨论】:
-
只是一个考虑因素。在发布帖子时,您的值对用户是隐藏的,这使得 url 很漂亮。但是,如果用户想要共享或收藏搜索结果,他们将无法这样做。看起来您进行了非常密集的搜索。要分享或保存结果,他们必须告诉分享结果的人以及他们是如何找到结果的,这需要告诉他们他们为上面列出的每个标准项输入的所有值。
标签: c# asp.net-mvc pagination