Сохранение значений в ASP.NET MVC - PullRequest
0 голосов
/ 19 декабря 2008

Фон

У меня есть страница в моем веб-приложении ASP.NET MVC, чтобы пользователи могли вводить адреса в свою адресную книгу. Когда пользователь вводит свой адрес и нажимает кнопку отправки, действие контроллера, которое обрабатывает сообщение формы, затем геокодирует адрес (извлекает широту, долготу и полный адрес в случае, если пользователь забыл ввести свое состояние, почтовый индекс и т. Д. .).

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

Это все прекрасно работает. Я храню список лучших совпадений в ViewData, и страница отображает элементы в списке как неупорядоченный список, если они предоставляются. Рядом с каждым из адресов находится ссылка «Выбрать», которую пользователь может использовать для выбора адреса, который он хочет использовать. Событие «click» ссылки «Выбрать» подключается с помощью jQuery для замены текста в текстовом поле исходного адреса на адрес, который выбирает пользователь, а затем нажимает кнопку отправки через javascript.

Проблема

Когда пользователь выбирает адрес, я хочу, чтобы действие моего контроллера проверяло, есть ли адрес уже в его адресной книге. Если это так, то я хочу вернуть сообщение об ошибке, указывающее, что этот адрес уже существует. Я также хочу повторно отобразить список возможных адресов для выбора пользователем (например, если пользователь первоначально видел список из 3 адресов для выбора, и он выбирает тот, который уже был в его адресной книге, на странице должен отображаться сообщение об ошибке и 3 адреса, чтобы выбрать из снова). Как я могу повторно отобразить список лучших совпадений, не делая еще один вызов службе геокодирования в моем действии контроллера?

Другими словами, у меня есть неупорядоченный список, созданный последним действием контроллера, который я хочу снова отобразить пользователю. Элементы в списке были отображены как текстовые строки и, следовательно, не были опубликованы в моем действии контроллера. Единственный способ решить эту проблему до сих пор - сохранить список совпадений адресов в сеансе. Я что-то упустил или это так, как мне следует?

С помощью приложения веб-форм ASP.NET я мог просто сохранять лучшие совпадения во ViewState, и он мог бы быть доступен мне на обратной передаче от пользователя, выбирающего адрес. Есть ли похожий механизм для ASP.NET MVC?

Ответы [ 3 ]

2 голосов
/ 19 декабря 2008

Вы можете использовать AJAX-запрос к вашему контроллеру, который проверит, существует ли уже этот адрес и обновляет ли он только контейнер сообщений об ошибках на странице. Таким образом, уже составленный список матчей останется без изменений.

1 голос
/ 19 декабря 2008

Почему бы вам не отфильтровать существующий адрес в адресной книге пользователя, прежде чем показать ему все варианты на выбор? Таким образом, пользователь не сможет выбрать уже существующий адрес, потому что он никогда не увидит его в качестве опции.

0 голосов
/ 19 декабря 2008

хранить адреса в таблице с идентификатором. Сохранить идентификатор в списке пользователей. Теперь легко отфильтровать список, проверив, существует ли идентификатор в списке пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...