加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 模型集合上的ModelBinding

发布时间:2020-12-16 07:02:14 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试创建一个非常简单的表单来回发模型集合中的一些值 当我单击提交,并查看返回的集合时,它不包含任何对象.我还认为asp-for不会生成我期望的集合索引. 我有一个简单的模型 public class CustomModel{ public int Id { get; set; } public string Quest
我正在尝试创建一个非常简单的表单来回发模型集合中的一些值

当我单击提交,并查看返回的集合时,它不包含任何对象.我还认为asp-for不会生成我期望的集合索引.

我有一个简单的模型

public class CustomModel
{
    public int Id { get; set; }
    public string Question { get; set; }
    public string Answer { get; set; }
}

这是我的观点

@model ICollection<CustomModel>
<form asp-action="Index" asp-controller="Home" method="POST">
<table>
    @foreach (var m in Model)
    {
        <tr>
            <td><label asp-for="@Model">@m.Question</label><input asp-for="@m.Answer"/></td>
        </tr>
    }
</table>
<input type="submit" value="save" />

呈现页面时的外观示例:

<tr>
            <td><label>Your name?</label><input type="text" id="m_Answer" name="m.Answer" value="" /></td>
        </tr>
        <tr>
            <td><label>Your Age?</label><input type="text" id="m_Answer" name="m.Answer" value="" /></td>
        </tr>

这是我假设它会有一个索引,但它看起来像是将每一行视为一个神经模型而不是一组模型.

我在这做错了什么?这是一个错误,还是设计?

Github测试项目
https://github.com/lasrol/TestModelBindingList

解决方法

将您的模型更改为@model List< CustomModel>
而不是使用下一个方法

<form asp-action="Index" asp-controller="Home" method="POST">
<table>
    @for (int i = 0; i < Model.Count; i++)
    {            
        <tr>
            <td>
                <input type="hidden" asp-for="@Model[i].Id" />
                <input type="hidden" asp-for="@Model[i].Question" />            
                <label asp-for="@Model[i].Question">@(Model[i].Question)</label>
                <input asp-for="@Model[i].Answer" />
            </td>
        </tr>            
    }
</table>
<input type="submit" value="save" />

因此,您可以看到您应该通过索引访问列表项以正确呈现输入的名称属性.另外,不要忘记通过隐藏输入包含其他项目属性,否则它将在后期操作中释放.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读