Фон
У меня есть страница в моем веб-приложении ASP.NET MVC, чтобы пользователи могли вводить адреса в свою адресную книгу. Когда пользователь вводит свой адрес и нажимает кнопку отправки, действие контроллера, которое обрабатывает сообщение формы, затем геокодирует адрес (извлекает широту, долготу и полный адрес в случае, если пользователь забыл ввести свое состояние, почтовый индекс и т. Д. .).
Теперь вполне возможно, что пользователь не ввел достаточно информации, чтобы получить точное совпадение. В этом случае служба геокодирования возвращает список наилучших совпадений для указанного адреса. Когда это происходит, я хочу предложить пользователю этот список лучших совпадений, чтобы он мог выбрать, какой адрес он хочет использовать.
Это все прекрасно работает. Я храню список лучших совпадений в ViewData, и страница отображает элементы в списке как неупорядоченный список, если они предоставляются. Рядом с каждым из адресов находится ссылка «Выбрать», которую пользователь может использовать для выбора адреса, который он хочет использовать. Событие «click» ссылки «Выбрать» подключается с помощью jQuery для замены текста в текстовом поле исходного адреса на адрес, который выбирает пользователь, а затем нажимает кнопку отправки через javascript.
Проблема
Когда пользователь выбирает адрес, я хочу, чтобы действие моего контроллера проверяло, есть ли адрес уже в его адресной книге. Если это так, то я хочу вернуть сообщение об ошибке, указывающее, что этот адрес уже существует. Я также хочу повторно отобразить список возможных адресов для выбора пользователем (например, если пользователь первоначально видел список из 3 адресов для выбора, и он выбирает тот, который уже был в его адресной книге, на странице должен отображаться сообщение об ошибке и 3 адреса, чтобы выбрать из снова). Как я могу повторно отобразить список лучших совпадений, не делая еще один вызов службе геокодирования в моем действии контроллера?
Другими словами, у меня есть неупорядоченный список, созданный последним действием контроллера, который я хочу снова отобразить пользователю. Элементы в списке были отображены как текстовые строки и, следовательно, не были опубликованы в моем действии контроллера. Единственный способ решить эту проблему до сих пор - сохранить список совпадений адресов в сеансе. Я что-то упустил или это так, как мне следует?
С помощью приложения веб-форм ASP.NET я мог просто сохранять лучшие совпадения во ViewState, и он мог бы быть доступен мне на обратной передаче от пользователя, выбирающего адрес. Есть ли похожий механизм для ASP.NET MVC?