我在IIS Express上部署了一个ASP.NET MVC Web应用程序。我面临的问题是我的模型绑定仅在Internet Explorer 上返回null 。
方案是,当用户不上传文档时,SimpleObject.File.File
应该返回null
,但仅在IE上,SimpleObject.File
返回null,这打破了我们的网站。
这是我的代码的简化版本:
模型
(SupportingFile
是HttpPostedFileBase
的包装类,SupportingFile.File
):
public class SimpleObject: IValidatableObject
{
[Required]
[Display(Name = "SupportingFiles_Name", ResourceType = typeof(ValidationStrings))]
public SupportingFile File { get; set; }
public SimpleObject()
{
this.File = new SupportingFile();
}
}
表格的一部分
<div class="form-row hide">
@Html.RequiredLabelFor(m => m.File.File,"Upload document",true)
@Html.TextBoxFor(m => m.File.File, new {type="file"})
@Html.ValidationMessageFor(m => m.File.File)
</div>
控制器
[AllowAnonymous]
[HttpPost]
[ValidateAntiForgeryToken] //CSRF validation
public ActionResult Index(SimpleObject model)
{
if (model.File == null)
{
throw new Exception("There is a special place in hell for IE");
}
}
有趣的是,我甚至没有绑定SimpleObject.File
- 它在默认构造函数中初始化。我绑定的是SimpleObject.File.File
,所有其他浏览器(FF,Chrome)按预期工作,除了IE ...
答案 0 :(得分:0)
我知道这很旧,但是今天我遇到了这样的问题,无法使用IE的原因是因为我的输入字段被禁用,我将其更改为只读,没有问题