Javascript 无法从<;获取/设置文件对象;输入>;视图标签

Javascript 无法从<;获取/设置文件对象;输入>;视图标签,javascript,ajax,asp.net-core-mvc,Javascript,Ajax,Asp.net Core Mvc,我有一个上传机制,在视图中看起来是这样的: <div method="post" enctype="multipart/form-data"> <input type="hidden" id="ProjectId" name="ProjectId" value="@Model.ProjectId"/> <input type="hidden" id="Name" name="Name" value= "" />

我有一个上传机制,在视图中看起来是这样的:

 <div  method="post" enctype="multipart/form-data">
        <input type="hidden" id="ProjectId" name="ProjectId" value="@Model.ProjectId"/>
        <input type="hidden" id="Name" name="Name" value= "" />
        <input type="hidden" id="Id" name="Id" value="" />
        <div class="col-md-10">
            <div class="form-group">
                <input type="file" asp-for="InputFile"  value="test" name="inputfile" onchange="ChooseInputFileButtonChanged(this);" id="ChooseInputFile"/>
                <input type="submit" value="Upload" id="UploadInputFileButton" onclick="UploadInstallIntructions();"/>
            </div>
        </div>
    </div>
应该已经绑定了这个文件

编辑:不是的副本,因为我的问题不是关于绑定FormData,而是FormFile不是从视图自动创建的。

请尝试以下代码:

    <form name="UpdateInstall" id="UpdateInstall" method="post" enctype="multipart/form-data">
        <input type="hidden" id="ProjectId" name="ProjectId" value="@Model.ProjectId"/>
        <input type="hidden" id="Name" name="Name" value= "" />
        <input type="hidden" id="Id" name="Id" value="" />
        <div class="col-md-10">
            <div class="form-group">
                <input type="file" asp-for="InputFile"  value="test" name="inputfile" onchange="ChooseInputFileButtonChanged(this);" id="ChooseInputFile"/>
                <input type="submit" value="Upload" id="UploadInputFileButton" onclick="UploadInstallIntructions();"/>
            </div>
        </div>
    </form>

        <script>
            function UploadInstallIntructions() {
                var formData = new FormData($("#UpdateInstall")[0]);
                $.ajax({
                    type: "POST",
                    url: '@Url.Action("UploadInputFile", "SoftwareVersion")',
                    data: formData,
                    processData: false,
                    contentType: false,
                    success: function (response) {
                        window.location.href = response;
                    }
                });
                return data;
            }
        </script>

函数UploadInstallIntructions(){
var formData=new formData($(“#UpdateInstall”)[0]);
$.ajax({
类型:“POST”,
url:'@url.Action(“UploadInputFile”,“SoftwareVersion”),
数据:formData,
processData:false,
contentType:false,
成功:功能(响应){
window.location.href=响应;
}
});
返回数据;
}

一旦我上传了这样的图像文件

$('input[type=“file”]”)。ajaxfileupload({
'action':'uploadFile.jsp',
“缓存”:false,
“onComplete”:函数(响应){
$('#upload').hide();
BootstrapDialog.show({
标题:“警报!”,
消息:“图像上载成功”,
按钮:[{
标签:“Ok”,
操作:函数(对话框){
dialog.close();
}
}]
});
var img_src=“../profilepic/”+响应;
设置超时(5000);
$(“#image”).attr(“src”,img#u src);
},
“onStart”:函数(){
$('#upload').show();
}
});


上传..
您不需要使用
FormData
使用ajax发布文件并设置正确的ajax选项。参考@StephenMuecke我尝试了你的解决方案,我确实得到了一个模型,但其中的所有内容都是null或0。这里显示的视图代码也是部分视图,如果这有助于解释这种行为的话。UploadInstructions方法位于父视图中,但无论如何都是这样。所以我仍然没有这个文件。然后你做得不对:)不,也许你遗漏了什么。它只在我手动将数据添加到formData对象时起作用:formData.append(“SoftwareVersion.Name”,Name);埃奇没有错过任何东西。阅读我给你的链接!您的代码正在向响应中添加属性
Name:Name
,而不是
SoftwareVersion.Name:Name
!您使用一个甚至不存在的元素(代码中没有带有`id=“SoftwareVersionName”的元素)的值来分配
名称(至少您不理解模型绑定)这只是一段代码,我在我的例子中已经这样做了。我希望它能帮助你。我已经使用jQuery.AjaxFileUpload.js上传了文件。
input type="file" asp-for="InputFile" value="test" name="inputfile" onchange="ChooseInputFileButtonChanged(this);" id="ChooseInputFile"/>
    <form name="UpdateInstall" id="UpdateInstall" method="post" enctype="multipart/form-data">
        <input type="hidden" id="ProjectId" name="ProjectId" value="@Model.ProjectId"/>
        <input type="hidden" id="Name" name="Name" value= "" />
        <input type="hidden" id="Id" name="Id" value="" />
        <div class="col-md-10">
            <div class="form-group">
                <input type="file" asp-for="InputFile"  value="test" name="inputfile" onchange="ChooseInputFileButtonChanged(this);" id="ChooseInputFile"/>
                <input type="submit" value="Upload" id="UploadInputFileButton" onclick="UploadInstallIntructions();"/>
            </div>
        </div>
    </form>

        <script>
            function UploadInstallIntructions() {
                var formData = new FormData($("#UpdateInstall")[0]);
                $.ajax({
                    type: "POST",
                    url: '@Url.Action("UploadInputFile", "SoftwareVersion")',
                    data: formData,
                    processData: false,
                    contentType: false,
                    success: function (response) {
                        window.location.href = response;
                    }
                });
                return data;
            }
        </script>