2013-12-18 220 views
0

我知道這已經被問了好幾次了,但是我見過的大多數(如果不是全部的話)解決方案涉及到javascript解決方案或禁用表單/提交按鈕,我不喜歡這種方式。防止重複表單提交MVC 4

我有幾個巨大的表單,可能需要一些時間才能完成提交,這可能會讓用戶在第一次提交期間多次重新提交,最終會導致數據庫中有很多記錄。

提出的解決方案:

甲提出的解決方案是有一個通用方法,該方法具有一個陣列,包括提交的所有形式的ID,每當用戶提交一個表單,它的ID將被添加到該陣列如果它不存在,在提交完成後ID將被彈出陣列。如果用戶打開同一表單的兩個或多個頁面並同步提交它們,則可以將此缺點計算在此解決方案上,但以後可能會擔心。

我的問題是我的建議解決方案有多可行,它有多好?以及我如何實現這種通用方法?

據我所知,Apache Struts 2框架有一些解決方案來防止這樣的事情(Token Interceptor),怎麼做,在MVC 4 ?:

回答

1

只需添加到視圖模型視圖綁定到一個GUID字段(您正在使用)每當需要空表單時,生成一個新的GUID(解決同一用戶下載兩個或多個副本的問題),並將其作爲隱藏字段包含在視圖中(字符串表示形式)。然後,您可以在會話變量或甚至基於數據庫的解決方案中實現您正在討論的數組解決方案,在該解決方案中,所有處理的GUID都保存在一個經常被清除的表中,一個包含GUID列表的文本文件等很難根據您提供的內容選擇完整的解決方案。但是上面的內容應該能夠爲您提供您所列出的所有要求。