你好,
我有一个包含一些输入字段的视图,其中一些字段是常规文件输入。提交此视图表单时,文件将保存在临时文件夹中。但是,如果在服务端检测到验证问题,则将返回相同的视图(用于更新)。问题是文件输入将不会再次填充(安全性),相反我必须扩展视图类并显示存储文件的小缩略图,并且还可以删除(以便能够上传另一个文件)。
当用户再次点击提交时,视图类将不包含有关存储文件的任何数据。最佳实践如何?
我自己的想法是以下之一:
- 使用隐藏字段,但是当要存储的类很复杂时,这会很复杂,而且也不会那么安全。
- 使用Session来存储数据,不知道这是好是坏?
- 创建一个单例类(如缓存),所有这些数据都将临时保存。ASP.NET 有一个缓存,您可以在其中设置一个时间,直到发布缓存,这将以相同的方式工作。
- 将广告作为临时广告保存在数据库中,这意味着当视图返回时,它实际上是对已创建广告的编辑,而不是对临时广告(不在数据库中)的编辑。问题可能是如果用户在第一次服务验证后中止,那么我们将有一个在数据库中不完整的广告。另一个减号是即使广告从未使用过,id 计数(身份)也会增加。此解决方案的最后一个问题是广告表将包含不完整的广告。
请指教
我的解决方案: 我最终使用 System.Web.Cache 在请求之间保存数据。创建并接受广告后,它将从缓存中删除并添加到数据库中。