C# HttpPostedFileBase在文件上载时始终为空,模型绑定错误

C# HttpPostedFileBase在文件上载时始终为空,模型绑定错误,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,我试图通过jQueryAjax将一个文件上传到ASP.NET核心MVC应用程序 HttpPostedFileBase始终为null。当我把它作为参数直接放在动作中时,我得到了一个模型界错误 Javascript: $(document).on('click', '#attachItemBtn', function () { var attachItemFiles = document.getElementById('attachItemFile'); var formData

我试图通过jQueryAjax将一个文件上传到ASP.NET核心MVC应用程序

HttpPostedFileBase
始终为
null
。当我把它作为参数直接放在动作中时,我得到了一个模型界错误

Javascript:

$(document).on('click', '#attachItemBtn', function () {
    var attachItemFiles = document.getElementById('attachItemFile');

    var formData = new FormData();
    formData.append("Document", attachItemFiles.files[0]);
    formData.append("Id", 1234);
    formData.append("FileName", "test");

    $.ajax({
        cache: false,
        type: "POST",
        data: formData,
        processData: false,
        contentType: 'multipart/form-data',
        url: App.Urls.AddAttachment,
        success: function (data) {
            App.Messages.showErrorMessage('Item attached');
        },
        error: function (xhr, ajaxOptions, thrownError) {
            App.Messages.showErrorMessage('Error Occured While attaching document');
        }
    });

    var debug = 0;
});
行动:

[HttpPost]
public IActionResult AddAttachment(AttachmentItemModel model)
{
    var count = HttpContext.Request.Form.Files.Count;
    int i = 0;
    return Json("done");
}
型号:

public class AttachmentItemModel
{
    public int Id { get; set; }
    public HttpPostedFileBase Document { get; set; }
    public string FileName { get; set; }
}
上面的代码适用于
HttpContext.Request.Form.Files
,但
model.Document
null

当我将操作重新写入以下函数签名时,我得到一个错误:

public IActionResult AddAttachment(int Id, string FileName, System.Web.HttpPostedFileBase Document)
然后我得到以下错误:

处理请求时发生未处理的异常。 InvalidOperationException:无法创建类型为的实例 “System.Web.HttpPostedFileBase”。模型绑定的复杂类型不能为 抽象类型或值类型,并且必须具有无参数构造函数


我遗漏了什么?我更喜欢在我的模型中绑定文件,而不是使用
HttpContext.Request.Files

您是如何得到
HttpPostedFileBase
来解析的?无论如何,它不存在于ASP.NET核心中。相反,您应该使用
ifformfile