Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将viewdata中的复杂类型转换为查询字符串_.net_Asp.net Mvc_Pagination - Fatal编程技术网

.net 如何将viewdata中的复杂类型转换为查询字符串

.net 如何将viewdata中的复杂类型转换为查询字符串,.net,asp.net-mvc,pagination,.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 Sel

我正在尝试在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; }        
}

对您来说,最好的解决方案是。使用json,您可以轻松地在javascript和c代码之间序列化和反序列化复杂类型

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

这是最常见的用法之一

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