2015-03-26 2 views
1

У меня есть действие MVC Asp.net, которое создает учетную запись пользователя (после проверки ввода). И View, содержащий регистрационную форму, которая вызывает это действие. Пока действие проверяет ввод, пользователь остается с веб-браузером, ожидающим ответа сервера, и еще раз нажмите кнопку «Отправить». Это создает несколько учетных записей. Есть ли способ пренебречь пользователем из репозиции формы без javascript. Я не могу использовать javascript в этом проекте, он предназначен для браузеров без javascript. Или вы можете предложить (сервер) другое решение?Предотвращение отправки нескольких форм без javascript

EDIT:

  1. Эта форма запрос использовать POST метода
  2. JavaScript не допускается, так как это веб-приложение предназначено для специальных веб-браузеров для людей с ограниченными возможностями, которые не поддерживают яваскрипт
+2

веб-приложений без использования JS. .. звук странный ... и это тоже в MVC. –

+1

Это запрос на получение или отправку? В любом случае вы можете применить проверку того, что если пользователь уже существует, то переустановите его. – Rusty

+0

@ Rajeev Kumar есть специальные веб-браузеры для людей с ограниченными возможностями, которые не поддерживают javascript. Это веб-приложение предназначено для них. – EOG

ответ

1

Вы должны справиться с ситуацией на стороне сервера, тогда нет никакого способа обойти это.

Есть 3 варианта, которые приходят на мой взгляд, атм:

  • создать печенье и для каждого представить чек, если он существует
  • подобное, но с использованием объекта
  • сеанса перед созданием новой учетной записи , всегда проверяйте, существует ли пользователь в базе данных. В любом случае, это не должно быть проблемой!
0

Вы можете добавить уникальный скрытый токен в качестве части формы. Этот токен также может быть сохранен как часть сеанса на сервере.

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

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

Конечно, вы также должны подумать о том, чтобы сделать процесс немного легче. Таким образом, система может быстро реагировать на ввод, а не заставлять пользователя ждать.

0

Обязательно ли использовать MVC? Я думаю, что вы можете сделать что-то подобное с помощью WebForms. Когда пользователь передает запрос, в код можно отключить кнопку представить, как это:

btnSubmit.Enabled = false; 

Но если MVC это должно быть, @walther ответ будет правильным

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