8

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

所以我在我的 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”检查,它就会返回无效,并显示我的错误消息“必须选择 .csv 文件”。

我假设我只是缺少一个参数,但我还没有在任何地方找到这个使用的样本。

4

1 回答 1

3

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

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

if (ModelState.IsValid)
{
  // Do the work
}
于 2013-02-27T22:12:36.353 回答