2010-12-14 3 views
1

Ниже приводится изображение из разделов я говорю о: alt textASP.NET MVC 2: Эмуляция eBay Postback

Что я делаю очень похож на eBay:

1) в виде вверху для «поисковых терминов», а затем категории.

2) фильтры слева, которые пользователь может щелкнуть, чтобы уточнить поиск еще дальше.

3) Сортировка этих результатов.

Я играл с eBay немного, и мне кажется, что они отправляют назад каждый раз, когда нажимают на фильтр (поле слева) или сортируют результаты. Затем они сохраняют копию всех «настроек», используемых для отображения страницы в форме, и используют ее для отправки на кнопку отправки?

Как я могу эмулировать эту функциональность? Мне не нравится идея обертывания всей страницы в элементе form ... это кажется грязным. Должен ли я использовать jQuery для сбора всего пользовательского ввода, а затем каким-то образом передать его?

+1

@Nathan, я не прошу кого-либо написать код для меня. Это очень самонадеянно ... Я искренне зациклен на том, как наилучшим образом добиться этого. Я использую eBay в качестве примера, ясно: «то, что я делаю, очень похоже на ebay» – dcolumbus

+0

Прошу прощения, если это казалось самонадеянным, но из текста вашего вопроса у меня создалось впечатление, что вы хотите обернуть eBay. Виноват. –

+0

@Nathan, понимается. Честно говоря, я просто пытаюсь понять, как я могу собрать весь этот пользовательский ввод (из некоторых элементов формы, щелкнув ссылки, сортировки и т. Д.) И выбросить все обратно на моем контроллере. Я просто не могу обернуть голову «правильным способом» этого. – dcolumbus

ответ

0

Я решил, что лучшим решением является использование jQuery Ajax. В противном случае я должен был бы убедиться, что каждый фрагмент пользовательского ввода является элементом form и завершает всю страницу в теге form.

1

Я не уверен, как это работает eBay, но если бы это был я, у меня был бы некоторый объект javascript, который отслеживал все параметры поиска на странице. Каждый из выделенных элементов загорится событие, которое заставит объект javascript обновить эту информацию, отправить его через AJAX в действие контроллера и обновить область результатов с изменениями.

Это несколько упрощенная версия событий, но, надеюсь, она может поставить вас на правильный путь.

+0

Это то, о чем я думал. Это только вариант? Мне кажется, что должен быть «способ MVC» делать такие вещи ... – dcolumbus

+0

Если вы хотите сделать это без использования AJAX, вы можете заставить ваше действие поиска использовать все возможные параметры поиска в качестве параметров, пройти эти параметры в код просмотра и настроить каждый вызов Html.ActionLink(), чтобы использовать все текущие параметры и параметр, связанный с нажатием этой конкретной кнопки. Таким образом, URL-адрес будет включать все ваши предыдущие параметры поиска, плюс тот, который вы только что нажали. – StriplingWarrior

+0

Да, единственная проблема заключается в том, что параметры являются динамическими и не могут быть предсказаны в модели или статическом наборе параметров. – dcolumbus