2013-12-18 5 views
0

Я знаю, что это было задано несколько раз, но большинство (если не всех) решений, которые я видел, связаны с решением javascript или отключением кнопки формы/отправки, что я не предпочитаю ,Предотвращение дублирования отправки формы MVC 4

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

Предлагаемое решение:

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

Мой вопрос в том, насколько реально мое предлагаемое решение и насколько оно хорош собой? и как я могу реализовать этот общий метод?

Я понимаю, что Apache Struts 2 структура имеет какое-то решение, чтобы предотвратить такую ​​вещь (Token Interceptor), как это сделать в MVC 4 ?:

ответ

1

Просто добавьте поле GUID в ViewModel вид привязан к (Вы используете ViewModels правильно?) И каждый раз, когда запрашивается пустая форма, генерируйте новый GUID (решает проблему загрузки двух или более копий одним и тем же пользователем) для него и включаете его в представление в виде скрытого поля (строковое представление его). Затем вы можете реализовать решение массива, о котором вы говорите, в переменной сеанса или даже в базе данных, в которой все обработанные GUID сохраняются в таблице, которая очищается так часто, текстовый файл, содержащий список идентификаторов GUID и т. Д. отчасти трудно выбрать полное решение, основанное только на том, что вы предоставляете. Но вышеуказанное должно предоставить вам все требования, которые вы указали.

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