Как преобразовать сложный тип в viewdata в строку запроса - PullRequest
0 голосов
/ 18 апреля 2011

Я пытаюсь реализовать расширенный поиск с функцией разбиения на страницы в приложении 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 голосов
/ 18 апреля 2011

лучшее решение для вас - Json.NET . используя json, вы можете легко сериализовать и десериализовать ваши сложные типы между javascript и вашим кодом c #.

просто создайте свой объект в javascript (SearchFilter) и c #. затем поместите атрибуты json в класс и его свойства. затем сериализовать ваш объект в javascript с использованием json и передать его в действие контроллера в действии у вас должен быть строковый параметр для получения сериализованного значения, а затем вы должны попросить json десериализовать параметр для требуемого объекта.

это один из распространенных способов использования Json.NET

...