Я работаю с ASP.NET MVC 2 и создаю простое бизнес-приложение. Вот некоторые детали:Как избежать потери состояния элементов управления в ASP.NET MVC
Кроме того, приложение сделок с заказов на выполнение работ и имеет вид индекса заказа работы. В обзоре есть таблица, в которой перечислены работы заказов и несколько элементов управления (текст боксов, флажков и выпадающих списков ), чтобы выбрать критерии для , которые заказы на работу отображаются.
Я использую viewmodels. Рабочий заказ индексный указатель имеет вид модели с свойствами для каждого контроля.
Я реализовал пейджинг, похожий на то, что делается в ответ на этот вопрос: How do I do pagination in ASP.NET MVC? Я использую LINQ пропустим() и Take(), как продемонстрировали и ActionLinks для навигации ,
Если я загрузить страницу и не манипулировать какой-либо из элементов управления, я могу нажмите на номер страницы ActionLinks и передвигаться только штрафом между страниц заказов на выполнение работ. Однако, если я что-то изменил, мои изменения теряются , когда я перехожу на другую страницу.
Например, если я нахожусь на странице 1 и нажмите непроверенной флажок и нажмите на ссылку для стр.2, второй страницы результатов загрузит но флажок будет вернуться к его предыдущее состояние.
Я понимаю, почему это происходит, но мне интересно, что лучше всего делать с точки зрения дизайна.
Потенциальные решения я могу думать:
Установите все контрольные значения в качестве маршрута значения в ActionLinks. Это кажется действительно неприятным и может привести к очень длинным URL-адресам или строкам запроса.На самом деле, теперь, когда я думаю об этом, это не сработает без возможности захвата контрольных значений.Поскольку ActionLinks не отправляет ничего, замените их на кнопки. Опять же, это похоже на плохую идею.
Изменить ссылки на ссылки, которые списать сценарий jQuery, который выполняет POST. Я думаю, что это самый перспективный вариант. У многих разработчиков это делается так?
Это кажется довольно распространенной проблемой, но ни один из этих вариантов не кажется совершенно правильным. Интересно, я что-то упустил.
Нет, я не хочу сохранять состояние своих элементов управления в базе данных; это было бы неэффективно. Однако я использовал jQuery в конце. – 2010-12-03 20:07:18