无法获取MVC 4 FileExtensions属性来处理ViewModel属性

时间:2013-02-05 22:45:26

标签: asp.net-mvc-4 data-annotations

我需要上传一个csv文件,我想将它的扩展名限制为.csv

所以我将follow属性添加到我的ViewModel:

[FileExtensions(ErrorMessage = "Must choose .csv file.",Extensions = "csv,txt")]
public HttpPostedFileBase File { get; set; }

在我看来,我有以下内容:

@Html.TextBoxFor(m => m.File, new { type = "file"})
@Html.ValidationMessageFor(m => m.File)

然而,只要它命中我的“ModelState.IsValid”检查它就会返回invalid,并显示错误消息“Must choose .csv file。”

我认为我只是缺少一个参数,但我还没有找到任何已经使用的样本。

1 个答案:

答案 0 :(得分:3)

问题是FileExtensionsAttribute仅适用于字符串变量。检查HttpPostedFileBase变量的文件扩展名的最简单方法是使用this simple attribute。它解决了我的问题。

唯一的缺点是这个新属性仅在服务器端验证,所以不要忘记检查模型状态:

if (ModelState.IsValid)
{
  // Do the work
}