我有一個包含一些輸入字段,其中一些領域是常規文件輸入的視圖。提交此視圖表單時,這些文件將被保存在臨時文件夾中。但是如果在服務端檢測到驗證問題,則會返回相同的視圖(用於更新)。問題是文件輸入不會再被填充(安全性),相反,我必須擴展視圖類並顯示存儲文件的小縮略圖,並且還可以刪除(以便能夠上載另一個文件)。
當用戶再次點擊提交時,viewclass將不包含有關存儲文件的任何數據。這是最佳做法?
我自己的想法是下列之一:
- 使用隱藏域,但是這將是複雜的,當類存儲是複雜的,它也不會是安全的。
- 使用會話來存儲數據,我不知道這是一個好還是壞的解決方案?
- 創建一個singelton類(如緩存),其中所有這些數據將被臨時保存。 ASP.NET有一個緩存,你可以設置一個時間直到發佈chache,這可以以同樣的方式工作。
- 將廣告臨時保存在數據庫中,這意味着當視圖返回時,它實際上是對已創建廣告的修改,而不是編輯臨時廣告(不在數據庫中)。問題可能在於如果用戶在第一次服務驗證後中止,那麼我們將在數據庫中包含一個不完整的廣告。另一個缺點是,即使廣告從不使用,ID號(身份)也會增加。此解決方案的最後一個問題是廣告表格中將包含不完整的廣告。
普萊斯建議
我的解決方案: 我結束了使用System.Web.Cache的請求之間保持數據。當廣告被創建並接受時,它將從緩存中移除並添加到數據庫中。
關於第3點 - 你仍然可以使用HttpContext.Current.Cache在ASP.NET MVC您在ASP.NET的WebForms用同樣的方式。 – tpeczek 2011-02-01 09:17:57
Grate !,但是第三點會比另一個更好嗎?如果是這樣,爲什麼? – Banshee 2011-02-01 09:32:33