首页 > 解决方案 > IFormFile 为空 ASP.NET Core。我复制了一个工作代码,但复制的代码不起作用

问题描述

我相信有人会立即发现错误。当用户发布资源时,它会发送一个 IFormFile。我创建了另一个也需要 IFormFile 的资源。我复制了代码检查了所有内容,但我的 IFormFile 为空。

     @model Loja
@*
    For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
}

<div class="row">
    <div class="col-md-5">
        <form asp-route="criar_loja">




            <div>
                <label>E-Mail</label>
                <input asp-for="EMail" class="form-control" />
                <span asp-validation-for="EMail"></span>

            </div>

            <div>
                <label>Confirmação de E-Mail</label>
                <input asp-for="ConfirmacaoEMail" class="form-control" />
                <span asp-validation-for="ConfirmacaoEMail"></span>

            </div>

            <div>
                <input name="Banner" type="file" />
            </div>

            <div>
                <label>Senha</label>
                <input asp-for="Senha" />
            </div>
            <div>
                <label>Confirmação de Senha</label>
                <input asp-for="ConfirmacaoSenha" />
            </div>


            <div>
                <button class="btn btn-primary" type="submit">cadastrar minha loja</button>
            </div>
        </form>
    </div>

    <div class="col-md-7">



    </div>

</div>

我正在使用类型化视图,但该文件没有“asp-for”属性。我不知道我为什么这样做,因为我前段时间写了这段代码。但这在另一个视图中有效,正在发送 IFormFile。此外,我尝试包含“asp-for="Banner",但没有成功。

我的模型 Loja:

    using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;

namespace Veiculos.Modelos
{
    [Table("loja")]
    public class Loja
    {
        [Key]
        [Column("id")]
        public int Id { get; set; }

        [Column("tipo_estabelecimento")]
        [Required(ErrorMessage = "Tipo de Estabelecimento é obrigatório.")]
        public int TipoEstabelecimento { get; set; }

        [Column("nome_fantasia")]
        [Required(ErrorMessage = "Nome Fantasia é obrigatório.")]
        public string NomeFantasia { get; set; }


        [Column("razao_social")]
        [Required(ErrorMessage = "Razão Social é obrigatório.")]
        public string RazaoSocial { get; set; }

        [Column("cnpj")]
        [Required(ErrorMessage = "CNPJ é obrigatório.")]
        public string CNPJ { get; set; }

        [Column("email")]
        [Required(ErrorMessage = "Email é obrigatório.")]
        public string EMail { get; set; }

        [Column("telefone_1")]
        public int Telefone1 { get; set; }

        [Column("telefone_2")]
        public int Telefone2 { get; set; }

        [Column("celular_1")]
        public int Celular1 { get; set; }

        [Column("celular_2")]
        public int Celular2 { get; set; }

        [NotMapped]
        [Required(ErrorMessage = "Confirmação de EMail é obrigatório.")]
        public string ConfirmacaoEMail { get; set; }

        [Column("senha")]
        [Required(ErrorMessage = "Senha é obrigatório.")]
        [MinLength(4, ErrorMessage = "A senha deve ter pelo menos 4 caracteres.")]
        [MaxLength(15, ErrorMessage = "A senha deve ter no máximo 15 caracteres.")]

        public string Senha { get; set; }

        [NotMapped]
        [Required(ErrorMessage = "Confirmação de Senha é obrigatório.")]
        public string ConfirmacaoSenha { get; set; }


        [ForeignKey("IdAnunciante")]
        public virtual List<Anuncio> Anuncios { get; set; } = new List<Anuncio>();

        [NotMapped]
        public IFormFile Banner { get; set; }
    }
}

在此处输入图像描述

标签: c#httpasp.net-core

解决方案


尝试enctype="multipart/form-data"像这样添加到您的表单中:<form asp-route="criar_loja" enctype="multipart/form-data">


推荐阅读