我使用自己的验证属性创建了ViewModel类,以检查上传的文件是否具有预期的扩展名(pdf,jpg):
public class TmpMyInvoiceDraftVM
{
public TmpMyInvoiceDraftVM()
{
this.AttachmentsInvoiceUploadedPartial = new List<HttpPostedFileBase>();
}
[Attachments]
public HttpPostedFileBase AttachmentsInvoiceUploadedPartial { get; set; }
[AttributeUsage(AttributeTargets.Property)]
private sealed class AttachmentsAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value,
ValidationContext validationContext)
{
HttpPostedFileBase file = value as HttpPostedFileBase;
if (file == null)
{
return ValidationResult.Success;
}
string ext = Path.GetExtension(file.FileName).ToLower();
if (String.IsNullOrEmpty(ext))
{
return new ValidationResult("File has no extension");
}
if (!ext.Equals(".pdf", StringComparison.OrdinalIgnoreCase) &&
!ext.Equals(".jpg", StringComparison.OrdinalIgnoreCase))
{
return new ValidationResult("Permitted formats: pdf,jpg");
}
return ValidationResult.Success;
}
}
}
它工作正常。这个类代表我的asp.net mvc应用程序中的表单数据。现在我的任务是扩展ViewModel以验证不是一个文件而是几个文件 - &gt;
public List<HttpPostedFileBase> AttachmentsInvoiceUploadedPartial { get; set; }
我不知道如何编写验证属性来检查所有附件。我甚至想知道是否可以创建这样的属性。有人可以告诉我如何构建这样的属性,或者如果不可能告诉我什么是更好的验证方法
List<HttpPostedFileBase>
? 谢谢!