如何将viewdata中的复杂类型转换为Query字符串

时间:2011-04-18 10:21:00

标签: .net asp.net-mvc pagination

我正在尝试在ASP.NET MVC应用程序中使用分页功能实现高级搜索。我试图在QueryString中传递搜索过滤器参数。 但由于搜索过滤器类型有点复杂,因此无法正确转换

帮我实现这个/

这是我的行动

public ActionResult AdSearch(SearchFilter SearchTerm, int index = 0, int perPage = 1)
{
    var customers = _repository.Search(SearchTerm, new SelectSpec(perPage, index * perPage));
    ViewData["SearchTerm"] = SearchTerm;
    return View("ExpertSearchResult", customers);
}

这是搜索过滤器

public class SearchFilter
{
    public IList<string> Countries { get; set; }
    public IList<string> Languages { get; set; }
    public IList<string> Industries { get; set; }
    public IList<string> Expertises { get; set; }        
}

以下是生成页面链接的代码

var searchCriteria = new RouteValueDictionary(ViewData["SearchTerm"]);searchCriteria.Add("perPage", 1);searchCriteria.Add("index", 1);return Html.ActionLink("First", "Results", searchCriteria)

1 个答案:

答案 0 :(得分:0)

最适合您的解决方案是Json.NET。使用json,您可以在javascript和c#代码之间轻松地序列化和反序列化复杂类型。

只需在javascript(SearchFilter)和c#中创建对象即可。然后将json属性放在类及其属性上。然后使用json在javascript中序列化对象并将其传递给控制器​​操作。在操作中你应该有一个字符串参数来获取序列化值,然后你应该让json反序列化参数到你需要的对象。

这是Json.NET

的常见用法之一