C# 在Asp.net Core MVC中执行POST时,用NULL填充的IFormFile属性类型

C# 在Asp.net Core MVC中执行POST时,用NULL填充的IFormFile属性类型,c#,asp.net-mvc,file-upload,asp.net-core-mvc,iformfile,C#,Asp.net Mvc,File Upload,Asp.net Core Mvc,Iformfile,我已经很久没有在网上寻找解决我问题的方法了,但是我不能。执行POST时,IFormFile类型的属性将填充NULL。 我已经尝试在我的操作中使用[FromForm],但它不起作用。我如何解决这个问题?谢谢:) 视图模型 public class SistemaBackupViewModel { [MaxLength(255, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")] [DisplayName

我已经很久没有在网上寻找解决我问题的方法了,但是我不能。执行POST时,IFormFile类型的属性将填充NULL。 我已经尝试在我的操作中使用[FromForm],但它不起作用。我如何解决这个问题?谢谢:)

视图模型

public class SistemaBackupViewModel
{
    [MaxLength(255, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")]
    [DisplayName("Nome do Arquivo")]
    public string NomeArquivo { get; set; }

    public IFormFile UpdateArquivo { get; set; }

}
控制器动作

[HttpPost]
[Authorize(Policy = "CanWriteSistemaBackupData")]
[Route("sistema-backup-gerenciar/backup-restore")]
[ValidateAntiForgeryToken]
public IActionResult BackupRestore([FromForm] SistemaBackupViewModel sistemaBackupViewModel)
{
    if (!ModelState.IsValid) return View(_sistemaBackupAppService.UpdateAttributesCreateBackup(sistemaBackupViewModel));

    if (sistemaBackupViewModel.UpdateArquivo != null)
    {
        var uniqueFileName = GetUniqueFileName(sistemaBackupViewModel.UpdateArquivo.FileName);
        var uploads = Path.Combine(hostingEnvironment.WebRootPath, "uploads");
        var filePath = Path.Combine(uploads, uniqueFileName);
        sistemaBackupViewModel.UpdateArquivo.CopyTo(new FileStream(filePath, FileMode.Create));

        //to do : Save uniqueFileName  to your db table   
    }



    _sistemaBackupAppService.CreateBackup(sistemaBackupViewModel);

    if (IsValidOperation())
        ViewBag.Sucesso = "Backup Restaurado!";

    return View(_sistemaBackupAppService.UpdateAttributesCreateBackup(sistemaBackupViewModel));
}
看法

@model Retaguarda.Application.ViewModels.Sistema.SistemaBackup.SistemaBackupViewModel
@{
ViewData[“Title”]=“Restaurar Backup do Sistema”;
布局=空;
}
@Html.AntiForgeryToken()
×闭合
@ViewData[“标题”]
×
迪卡

餐厅是一家提供信息的餐厅。不可逆过程

@Html.HiddenFor(model=>model.NomeArquivo) @**@ 伊尼西亚餐厅 莫斯特拉迪卡斯酒店 粪便 $('frmBackupRestore')。关于('submit',函数(e){ e、 预防默认值(); 惊吓时刻(); });
您是如何提交表格的?我看到“不提交”按钮。JavaScript?您还应该设置输入的<代码> ID >代码>,以匹配VIEWMICE属性<代码> ID=“UpDATEQUIVO”< /代码>也可以考虑使用<代码> [FFFRES] < /C>不能用代码复制,您如何张贴数据,形成POST或JS?hello @ NKSiII更新了帖子…我试过你的建议,但还是没用。你是如何提交表格的?我看到“不提交”按钮。JavaScript?您还应该设置输入的<代码> ID >代码>,以匹配VIEWMICE属性<代码> ID=“UpDATEQUIVO”< /代码>也可以考虑使用<代码> [FFFRES] < /C>不能用代码复制,您如何张贴数据,形成POST或JS?hello @ NKSiII更新了帖子…我试过你的建议,但还是不起作用。
    @model Retaguarda.Application.ViewModels.Sistema.SistemaBackup.SistemaBackupViewModel
@{
    ViewData["Title"] = "Restaurar Backup do Sistema";
    Layout = null;
}

<div>
    <form method="post" asp-action="BackupRestore" asp-controller="SistemaBackup" id="frmBackupRestore" enctype="multipart/form-data" >
        @Html.AntiForgeryToken()

        <div class="modal-shadow">
            <div class="modal-header modal-header-primary">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
                <h4><i class="modal-title text-center icon glyphicon glyphicon-export"></i> @ViewData["Title"] </h4>
            </div>

            <div id="alert-dicas" role="alert" class="alert alert-warning alert-icon alert-dismissible">
                <button id="btn-close-dicas" aria-label="Close" class="close" type="button">
                    <span aria-hidden="true">×</span>
                </button>
                <i class="icon fa-lightbulb-o" aria-hidden="true"></i>
                <h4>Dica</h4>
                <p>
                    Restaurar um backup apagará todos os seus registros e regravará novas informações. Este processo é irreversível!<br />
                </p>
            </div>
        </div>

        <div class="panel">
            <div class="panel-body container-fluid pt-10 pl-15 pr-15">
                <div class="form-horizontal">
                    <vc:summary />
                    <div class="form-group row">

                        @Html.HiddenFor(model => model.NomeArquivo)

                        <div class="col-md-5">
                            @*<input type="file" asp-for="UpdateFile" id="input-file-events" class="dropify-event" />*@
                            <input name="UpdateArquivo" id="UpdateArquivo" type="file" class="form-control" />
                        </div>



                    </div>
                </div>
            </div>
        </div>

        <div class="col-md-offset-2 col-md-10">
            <div class="modal-footer">
                <div class="float-left">
                    <div class="btn-group btn-group-sm mr-auto"
                         role="group">
                        <button id="btnIniciarRestauracao" type="submit" class="btn btn-success"><i class="icon wb-check"></i> Iniciar Restauração </button>
                        <button id="btn-activate-dicas" class="btn btn-dark"><i class="icon fa-lightbulb-o"></i> Mostrar Dicas </button>
                        <button id="btnFechar" class="btn btn-danger" data-dismiss="modal"><i class="icon wb-close"></i> Fechar </button>
                    </div>
                </div>
            </div>
        </div>

    </form>
</div>

<script>
    $('#frmBackupRestore').on('submit', function (e) {
        e.preventDefault();
        startLoadOneMoment();
    });
</script>