2011-04-18 44 views
0

我试图在ASP.NET MVC应用程序中实现高级搜索与分页功能。我试图在QueryString中传递搜索过滤器参数。 但作为搜索过滤器类型是有点复杂,它不正确地转换如何将viewdata中的复杂类型转换为查询字符串

帮助我实现这个/

这里是我的行动

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) 

回答

0

您的最佳解决方案是Json.NET。使用JSON,你可以轻松地序列化和反序列化JavaScript和你的C#代码之间的复杂类型。

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

这是一种常用的Json.NET

相关问题