【发布时间】:2015-09-30 16:57:27
【问题描述】:
我正在尝试使用 MVC 中的 HTML FileUpload 控件上传文件。我想验证文件以仅接受特定的扩展名。我尝试使用 DataAnnotations 命名空间的 FileExtensions 属性,但它不起作用。请参阅下面的代码 -
public class FileUploadModel
{
[Required, FileExtensions(Extensions = (".xlsx,.xls"), ErrorMessage = "Please select an Excel file.")]
public HttpPostedFileBase File { get; set; }
}
在控制器中,我正在编写如下代码-
[HttpPost]
public ActionResult Index(FileUploadModel fileUploadModel)
{
if (ModelState.IsValid)
fileUploadModel.File.SaveAs(Path.Combine(Server.MapPath("~/UploadedFiles"), Path.GetFileName(fileUploadModel.File.FileName)));
return View();
}
在视图中,我写了下面的代码-
@using (Html.BeginForm("Index", "FileParse", FormMethod.Post, new { enctype = "multipart/form-data"} ))
{
@Html.Label("Upload Student Excel:")
<input type="file" name="file" id="file"/>
<input type="submit" value="Import"/>
@Html.ValidationMessageFor(m => m.File)
}
当我运行应用程序并提供无效的文件扩展名时,它没有向我显示错误消息。 我知道编写自定义验证属性的解决方案,但我不想使用自定义属性。请指出我哪里出错了。
【问题讨论】:
-
@serhiyb 感谢您的回复。我已经完成了那个解决方案。但我不想使用自定义属性,我想使用.NET 已经提供的属性。我做错了什么还是微软提供的属性有问题?
-
由于 FileExtensions 属性在 MVC5 中工作正常(刚刚测试)我认为在较低版本中存在问题。
-
嗨,也许这可以帮助你...stackoverflow.com/questions/8536589/…
标签: c# .net asp.net-mvc file-upload data-annotations