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