我需要上传一个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。”
我认为我只是缺少一个参数,但我还没有找到任何已经使用的样本。
答案 0 :(得分:3)
问题是FileExtensionsAttribute仅适用于字符串变量。检查HttpPostedFileBase变量的文件扩展名的最简单方法是使用this simple attribute。它解决了我的问题。
唯一的缺点是这个新属性仅在服务器端验证,所以不要忘记检查模型状态:
if (ModelState.IsValid)
{
// Do the work
}