MVC数据注释FileExtensions无法正常工作

时间:2015-02-06 11:16:48

标签: asp.net-mvc asp.net-mvc-5 data-annotations file-extension

我需要上传.XLSX文件,我想限制其他文件格式

我的代码

[Display(Name = "File Upload")]
[FileExtensions(Extensions = ".xlsx")]
public HttpPostedFileBase VendorFileType { get; set; }

REFERENCE LINK

能够无限制地上传文件(验证无效) 我正在使用MVC 5.任何人共享简单示例,因此可以实现限制(仅使用数据注释(无jquery / javascript)

1 个答案:

答案 0 :(得分:1)

文件扩展名数据注释仅适用于字符串data.i解决了这个问题,帮助验证属性被调用是自定义服务器端验证。
1.首先在项目的根目录上创建一个名为Validation的文件夹 2.在这个文件夹中创建一个名为FileExtensionValidation的类,如下代码所示:

public class FileExtensionsValidation : ValidationAttribute
{
    protected override ValidationResult IsValid(object value,ValidationContext validationContext)
    {
        if (value != null)
        {
            HttpPostedFileWrapper file = (HttpPostedFileWrapper)value;
            string extention = Path.GetExtension(file.FileName);

            if (extention != ".xlsx")
            {
                return new ValidationResult(".xlsx only");
            }
        }

    return ValidationResult.Success;

    }
}

3.在首页添加

Using ProjectName.ValidationFolderName;

4.在任何文件上传之上进行验证:

public class FileUploadViewModel:BaseViewModel
{        
    [Required]        
    [FileExtensionsValidation]
    public HttpPostedFileBase FileUpload { get; set; }     
}