こんにちは、みんな!
私はモデルの検証に少し慣れていないので、 IValidatableObject インターフェイスを使用して Articles オブジェクトとアップロードされたファイルを検証しようとしましたが、成功しませんでした。
この次のクラスは、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!!
}
}
}