2

MVC 3 Webアプリケーションにファイルアップロード機能があり、これらの属性を使用してFileSizeとFileTypeを検証しようとしています。

[FileSize(1048576, ErrorMessage = "The image is too big. It should be up to 1MB")]
[FileType(MimeTypes.Image.Jpg, MimeTypes.Image.Jpeg, MimeTypes.Image.Png, "image/pjpeg", "image/x-png", ErrorMessage = "Your image must be a JPG/JPEG or PNG up to 1MB.")]
public HttpPostedFileBase File { get; set; }

HTMLは次のとおりです。

<input type="file" size="20" name="File" />
@Html.ValidationMessageFor(x => x.File)

ファイルを選択すると、すべてが完璧に機能します。ただし、ファイルが選択されていない場合でも、FileSizeまたはFileTypeの検証が実行され、検証エラーが発生します。POSTでファイルが必要にならないようにするにはどうすればよいですか?

4

1 に答える 1

4

値がnullの場合に検証を実行しないように、FileSizeおよびカスタム検証属性を変更する必要があります。FileType例えば:

public class FileSizeAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value == null)
        {
            // don't validate if value is null
            return null;
        }

        // TODO: do whatever validation you were supposed to do
        ...
    }
}

そして[Required]、あなたがファイルを必要とすることができるのは属性を通してです。

于 2012-08-28T10:14:42.110 に答える