Проверка загруженных файлов с использованием IValidatableObject


Всем привет!

Я немного новичок в проверке модели, и я пытался проверить объект Articles и загруженный файл, используя интерфейс IValidatableObject, но безуспешно.

Этот следующий класс очень хорошо проверяет объект Articles, но я не вижу, как внедряется HttpPostedFileBase, чтобы я мог проверить его. Можно ли этого достичь, используя этот метод?

Форма, которую я использую для отправки данных, включает в себя атрибут enctype = multipart/form-data, поэтому он знает свои файлы публикации.

Это полный класс, который я пытаюсь проверить. Это действительно застряло у меня, и любая помощь будет очень признательна.

public class ArticlesModel : IValidatableObject
{
    public Article Article { get; set; }
    public IEnumerable<Category> Categories { get; set; }
    public HttpPostedFileBase PostedFile { get; set; }

    public ArticlesModel(){}

    public ArticlesModel(Article article, IEnumerable<Category> categories)
    {
        this.Article = article;
        this.Categories = categories;
    }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (Article.CategoryID == 0)
        {
            yield return new ValidationResult("Please select a category.", new[] { "Article.Category"});
        }

        if (Article.Title == null)
        {
            yield return new ValidationResult("Please enter a title.", new[] { "Article.Title" });
        }

        if (Article.Content == null)
        {
            yield return new ValidationResult("Please enter some content.", new[] { "Article.Content" });
        }


        if (PostedFile == null)
        {
            yield return new ValidationResult("Please upload a file.", new[] { "Article.ImageFile" });
        }
        else
        {
            if (PostedFile.ContentLength > 1 * 1024 * 1024)
            {
                yield return new ValidationResult("Please upload a file 1Mb or less.", new[] { "Article.ImageFile" });
            }

            //Other file checking logic here please!!
        }
    }
}

0 ответов

Другие вопросы по тегам