我尝试创建一个带有图片上传字段和名称字段的表单,并使用视图模型进行验证(参见下文)。问题是当我将我的数据库迁移到此类的帐户或在Visual Studio中启动播放(启动该站点)时,我收到以下错误:
InvalidOperationException: The property 'ImageUpload' on entity type 'BallWallWebApp.ViewModels.Slides.CreateSlideViewModel' has not been added to the model or ignored.
Microsoft.Data.Entity.Metadata.Conventions.Internal.PropertyMappingValidationConvention.Apply(InternalModelBuilder modelBuilder)
代码:
using Microsoft.AspNet.Http;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace BallWallWebApp.ViewModels.Slides
{
public class CreateSlideViewModel
{
[Required]
public int WallId { get; set; }
[Required]
[Display(Name = "Slide Name")]
[DataType(DataType.Text)]
public string Name { get; set; }
[Required]
[Display(Name = "Slide image file")]
[DataType(DataType.Upload)]
public IFormFile ImageUpload { get; set; }
}
}
我错过了什么?
答案 0 :(得分:2)
事实证明代码没有任何问题,我只是在创建视图时意外选择了Data Context Class
,意味着EF
开始关注视图模型,它绝对不应该这样做(查看模型不应该靠近数据库。)
答案 1 :(得分:0)
此外,您可以像这样
验证modelView中的文件扩展名[FileExtensions(Extensions="jpg,jpeg,png,pdf")]
public IFormFile ImageUpload {get; set;}
如何从模型视图验证文件大小,请问任何人?