使用 HttpPostedFile 编辑视图模型绑定
Posted
技术标签:
【中文标题】使用 HttpPostedFile 编辑视图模型绑定【英文标题】:Edit View Model Binding with HttpPostedFile 【发布时间】:2012-11-23 03:32:36 【问题描述】:我有一个 ViewModel:
public HttpPostedFileBase File get; set;
public string Notes get; set;
在Create
视图中,我有一个<input type="file" name="file" />
将HttpPostedFile
绑定到模型。到目前为止,一切顺利。
当我尝试使用他们各自的视图开发“编辑”操作时,我的问题就开始了。
我完全没有问题显示字符串属性Notes
的编辑器字段,这部分很简单。
但是,如何在 Edit
视图中显示带有实际值的 <input type="file" name="file" />
?如何将字节数组绑定到 ViewModel 的 File
属性?这是正确的方法吗?还有其他更好的解决方案吗?我对此束手无策,非常感谢您的帮助。
【问题讨论】:
作为文件输入类型仅用于上传而不是在浏览器中编辑文件您想要实现什么? 【参考方案1】:你不能。<input type="file" />
不是用来编辑文件的,只是用来上传文件的。
如果您只想在编辑视图中删除文件,试试这个(只是一个例子):
-
在编辑视图模型中添加布尔属性
DeleteFile
将该属性添加为编辑视图中的复选框
在您的编辑方法中检查 DeleteFile
是否设置为 true,如果是,则查找并删除附加到您正在编辑的记录的文件
您可以将File
重命名为UploadedFile
(这样更清晰一些)。但这当然取决于你。
【讨论】:
感谢您的回答,马克。但是在编辑视图中,用户必须更改文件,而不是删除它(文件是必需的)。我想我得用一点 Jquery 来控制它……再次感谢! 您可以向用户显示文件上传控件,以便他可以上传新文件并在服务器端替换旧文件。您可以向用户显示服务器上存在文件,但无法设置文件上传控件的值(因为这将是安全漏洞)。 这就是重点。我必须这样做,显示实际的文件名(例如)并在控制器中检查模型的 File 属性是否为空(上传新文件并更新数据库)。谢谢,最好的问候!以上是关于使用 HttpPostedFile 编辑视图模型绑定的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET MVC 中使用 FileShare.ReadWrite 和 HttpPostedFile