是否有任何方式可以发布文件(< input type =“file”/>)参与ASP.NET MVC中的模型绑定,而无需手动查看自定义模型绑定器中的请求上下文,并且不创建单独的动作方法只需要一个贴文件作为输入?
我会以为这样会奏效:
class MyModel { public HttpPostedFileBase MyFile { get; set; } public int? OtherProperty { get; set; } } <form enctype="multipart/form-data"> <input type="file" name="MyFile" /> <input type="text" name="OtherProperty" /> </form> public ActionResult Create(MyModel myModel) { ... }
但是鉴于上述情况,MyFile甚至不是绑定上下文中的值提供者值的一部分。 (当然是OtherProperty。)但是如果我这样做,它是有效的:
public ActionResult Create(HttpPostedFileBase postedFile,...) { ... }
那么为什么当参数是一个模型时不会发生绑定,我该如何使它工作?我没有使用自定义模型绑定器的问题,但是如何在自定义模型绑定器中执行此操作,而不查看Request.Files [“MyFile”]?
为了一致性,清晰度和可测试性,我希望我的代码提供自动绑定模型上的所有属性,包括绑定到发布文件的属性,而无需手动检查请求上下文。我目前正在使用the approach Scott Hanselman wrote about测试模型绑定。
或者我以错误的方式去这个?你会如何解决这个问题?或者由于Request.Form和Request.Files之间的分离历史,这是不可能的设计吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。