C# HttpPostedFileBase在MVC页面中始终为空

C# HttpPostedFileBase在MVC页面中始终为空,c#,asp.net-mvc,image,razor-pages,httppostedfilebase,C#,Asp.net Mvc,Image,Razor Pages,Httppostedfilebase,我已经创建了一个表单,用户可以上传个人资料照片,它以字节数组的形式存储在数据库中。 但是在post方法中,我得到的HttpPostedFileBase属性的值为null <form id="profile-form" method="post" enctype="multipart/form-data"> <div class="col-md-6"> <div class="row"> <div class=

我已经创建了一个表单,用户可以上传个人资料照片,它以字节数组的形式存储在数据库中。 但是在post方法中,我得到的HttpPostedFileBase属性的值为null

<form id="profile-form" method="post" enctype="multipart/form-data">
    <div class="col-md-6">
       <div class="row">
            <div class="form-group col-md-6">
                 <img id="output" style="height:200px; width:200px;" />
            </div>
       </div>
       <div class="row">
            <div class="form-group col-md-12">
                <input asp-for="Input.ProfilePhoto" type="file" onchange="loadFile(event)" class="form-control">
            </div>
       </div>
       <button type="submit" class="btn btn-default" value="Upload">Save</button>
   </div>
</form>

public class Input
{
      [Display(Name = "Profile Photo")]
      public HttpPostedFileBase ProfilePhoto { get; set; }
}

public async Task<IActionResult> OnPostAsync()
{

}

拯救
公共类输入
{
[显示(Name=“个人资料照片”)]
公共HttpPostedFileBase配置文件照片{get;set;}
}
公共异步任务OnPostAsync()
{
}

相当于
HttpPosteFileBase
的ASP.NET核心是
IFormFile

[BindProperty]
public IFormFile Upload { get; set; }

public async Task OnPostAsync()
{
    var file = Path.Combine(_environment.ContentRootPath, "uploads", Upload.FileName);
    using (var fileStream = new FileStream(file, FileMode.Create))
    {
        await Upload.CopyToAsync(fileStream);
    }
}
您还需要使用
[BindProperty]
属性来修饰
IFormFile
属性(或它所在的类)


Ref:

您确定要在表单中添加enctype=“multipart/form data”吗?我已经添加了
,然后更改httppostedfilebase->ifformfile