如何将IFormFile放入MVC6中的View模型中

时间:2016-04-12 00:04:02

标签: c# asp.net asp.net-core asp.net-core-mvc

我尝试创建一个带有图片上传字段和名称字段的表单,并使用视图模型进行验证(参见下文)。问题是当我将我的数据库迁移到此类的帐户或在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; }
    }
}

我错过了什么?

2 个答案:

答案 0 :(得分:2)

事实证明代码没有任何问题,我只是在创建视图时意外选择了Data Context Class,意味着EF开始关注视图模型,它绝对不应该这样做(查看模型不应该靠近数据库。)

答案 1 :(得分:0)

此外,您可以像这样

验证modelView中的文件扩展名
[FileExtensions(Extensions="jpg,jpeg,png,pdf")]
public IFormFile ImageUpload {get; set;}

如何从模型视图验证文件大小,请问任何人?