首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将对象列表从视图发送到控制器

无法将对象列表从视图发送到控制器
EN

Stack Overflow用户
提问于 2019-07-26 02:56:47
回答 2查看 105关注 0票数 0

将自定义对象的列表传递给控制器时出现问题

这就是模型

代码语言:javascript
复制
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; }
}

和表单

代码语言:javascript
复制
<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总是空的。不确定我做错了什么。

代码语言:javascript
复制
[HttpPost]
    public async Task<IActionResult> UploadDocuments(UploadDocumentViewModel model)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-26 03:40:14

事实证明,这需要我通过DocumentDescription在视图模型上尝试不同的构造函数,但当没有向控制器传递描述时,它总是无法绑定。

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2019-07-26 03:10:21

请尝试删除asp-for属性并使用有效的name属性。您不需要提供单词Model来提供模型。

代码语言:javascript
复制
@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>
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57208572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档