【发布时间】:2020-07-27 08:08:15
【问题描述】:
我正在尝试创建一个允许用户将文档动态添加到模型的页面。我正在使用部分视图执行此操作,该视图通过 ajax 调用,然后在页面上呈现:
<h4>Property</h4>
<hr />
<div class="row">
<div class="col-md-8">
<form asp-action="CreateProperty" enctype="multipart/form-data" id="propertyCreateForm" method="post", name="propertyDocument">
<div class="form-group" id="propertyDocumentsContainer">
@Html.EditorFor(item => item.Documents)
</div>
<div class="row">
<input type="button" class="btn btn-secondary" id="btnAdd" value="Add Document">
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<script type="text/javascript">
$('#btnAdd').on('click', function () {
var form = $('#propertyCreateForm')[0];
var formData = new FormData(form);
$.ajax({
async: true,
data: formData,
processData: false,
contentType: false,
type: "POST",
url: "/Property/AddPropertyDocument",
success: function(partialView){
console.log("Partial View: " + partialView),
$('#propertyDocumentsContainer').html(partialView)
}, error: function(err){
console.error(err.error);
}
});
});
</script>
}
局部视图如下:
<div class="row">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Document"></label>
<input asp-for="Document" class="form-control" type="file"/>
<span asp-validation-for="Document" class="text-danger"></span>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label asp-for="DocumentType"></label>
<select asp-for="DocumentType.Id" asp-items="@ViewBag.DocumentTypes" class="form-control"></select>
<span asp-validation-for="DocumentType" class="text-danger"></span>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label asp-for="ExpiryDate"></label>
<input asp-for="ExpiryDate" class="form-control" />
<span asp-validation-for="ExpiryDate" class="text-danger"></span>
</div>
</div>
</div>
</div>
一切正常,除了在返回数据时它没有留下文档。我可以将输入设置为文件吗?我的示例中的 Document 属性是一个 IFormFile
【问题讨论】:
-
您没有显示
<form>标签。它在某个地方吗?如果有,它是否具有必需的属性enctype="multipart/form-data"?请edit问题并包含它。 -
嗨,我已经更新了问题以包括 form 和 enc 类型。文件正在进入部分视图,只是当它返回时它没有加载选定的文件。
-
这是我的完整数据的 git hub 存储库:github.com/marcusstockton/DotnetMVCPropertyManager
标签: model-view-controller razor .net-core