将自定义对象的列表传递给控制器时出现问题
这就是模型
public class UploadDocumentViewModel
{
public string EncryptedApplicationId { get; set; }
public List<DocumentViewModel> Documents { get; private set; }
public UploadDocumentViewModel()
{
Documents = new List<DocumentViewModel>();
}
}
public class DocumentViewModel
{
public IFormFile DocumentFile { get; set; }
public string DocumentDescription { get; set; }
}和表单
<form asp-action="UploadDocuments" enctype="multipart/form-data">
<input asp-for="EncryptedApplicationId" type="hidden" />
<div class="form-group mt-20">
@for (int i = 0; i < Model.Documents.Count; i++)
{
<div class="form-group mt-20">
<input asp-for="Documents[i]" type="hidden" />
<label asp-for="Documents[i].DocumentDescription" />
<input asp-for="Documents[i].DocumentFile" />
</div>
}
</div>
<div class="form-group mt-20">
<a asp-action="Exit" asp-route-applicationId="@Model.EncryptedApplicationId" class="btn btn-info btn-primary btn-rounded text-left" style="position:relative;left:-1em;">Exit</a>
<button type="submit" class="btn btn-info btn-success btn-rounded text-right" style="position:relative;right:-8em;">Continue <i class="ti ti-angle-double-right" style="font-weight:bold;top:1px;right:-5px;position: relative;"></i></button>
</div>
</form>但是在我的Post方法中,我的model.Documents总是空的。不确定我做错了什么。
[HttpPost]
public async Task<IActionResult> UploadDocuments(UploadDocumentViewModel model)发布于 2019-07-26 03:40:14
事实证明,这需要我通过DocumentDescription在视图模型上尝试不同的构造函数,但当没有向控制器传递描述时,它总是无法绑定。
<form asp-action="UploadDocuments" enctype="multipart/form-data">
<input asp-for="EncryptedApplicationId" type="hidden" />
@for (int i = 0; i < Model.Documents.Count; i++)
{
<div class="form-group mt-20">
<input asp-for="Documents[i].DocumentDescription" type="hidden" />
<label class="control-label">@Model.Documents[i].DocumentDescription</label>
<input class="form-control" asp-for="Documents[i].DocumentFile" />
</div>
}
<div class="form-group mt-20">
<a asp-action="Exit" asp-route-applicationId="@Model.EncryptedApplicationId" class="btn btn-info btn-primary btn-rounded text-left" style="position:relative;left:-1em;">Exit</a>
<button type="submit" class="btn btn-info btn-success btn-rounded text-right" style="position:relative;right:-8em;">Continue <i class="ti ti-angle-double-right" style="font-weight:bold;top:1px;right:-5px;position: relative;"></i></button>
</div>
</form>发布于 2019-07-26 03:10:21
请尝试删除asp-for属性并使用有效的name属性。您不需要提供单词Model来提供模型。
@for (int i = 0; i < Model.Documents.Count; i++)
{
<div class="form-group mt-20">
@* if you want to send the data in the DocumentFile property, just send it as a hidden *@
@Html.HiddenFor(model => model.Documents[i].DocumentFile)
<label for="@Html.NameFor(model => model.Documents[i].DocumentFile)">@Html.DisplayFor(model => Documents[i].DocumentDescription)</label>
@Html.EditorFor(model => model.Documents[i].DocumentFile)
</div>
}https://stackoverflow.com/questions/57208572
复制相似问题