2010-05-15 2 views
1

Я пытаюсь разбивать на страницы результаты «расширенного поиска», у меня есть сложная модель, представляющая параметры поиска;ActionLink, отправляющий модель сложного типа

int ZipCode 
int MinAge 
int MaxAge 
Availability 
    bool Monday 
    bool Tuesday 
    ... 
    bool Friday 
Requirements 
    bool FirstAid 
    bool DriversLicense 

Я использую;

<%: Html.ActionLink("Next »", "Save", "Notification", Model.options)%> 

, правильно передает все данные на первом уровне, но ничего, что субобъект (Наличие или требования) не раскрывается в URL, все это я получаю имя класса и поэтому я теряю большинство параметров поиска, когда я нажимаю ссылку, чтобы перейти на другую страницу.

Любые мысли?

+1

Посмотрите, поможет ли это http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx –

ответ

0

Я закончил создание переопределенного метода ToString(), который преобразовал сложную модель в строку запроса. Затем была создана плоская модель, которая сопоставила строку запроса и метод преобразования, чтобы вытащить исходный сложный объект.

Я не буду лгать ... Это много взлома.

Но все это работает и довольно надежно.

0

Где-то вниз линия ваш объект Options привыкает в качестве аргумента конструктора RouteValueDictionary:

http://msdn.microsoft.com/en-us/library/cc680272(v=VS.100).aspx

код в этом конструкторе не рекурсивно спуститесь в свойствах вашего вложенного объекта. Он будет отражать только первый уровень ваших свойств.

+0

Да, я знаю, что это так ... Я искал решение. –

+0

@ Xenph Yan "Любые мысли?" заставил меня поверить, что вы не понимали, что происходит. – jfar

Смежные вопросы