在开始之前,我已经看过这个问题:
编辑器模板中 <List> 项的 asp.net mvc 模型绑定失败
我有一个看起来像这样的模型:
public class PartnerListModel
{
public List<PartnersModel> Partners { get; set; }
public PartnerListModel()
{
Partners = new List<PartnersModel>();
}
}
然后我的 PartnersModel 看起来像这样:
public class PartnersModel
{
public int ID { get; set; }
public string Name { get; set; }
public bool IsActive { get; set; }
}
我将 PartnersListModel 传递给视图,如下所示:
using (Html.BeginForm("Update", "Partners", FormMethod.Post))
{
@Html.EditorFor(m => m.Partners)
<input type="submit" value="Submit Changes"/>
}
最后,我的编辑器模板如下所示:
@model AdminWebsite.Models.Partners.PartnersModel
<div>
<span>
@Html.DisplayFor(m => m.Name)
</span>
<span>
@Html.EditorFor(m => m.IsActive)
</span>
@Html.HiddenFor(m => m.ID)
@Html.HiddenFor(m => m.Name)
</div>
我的控制器的动作是这样的,并且代码确实设法达到了这个动作:
public ActionResult Update(PartnerListModel partners)
为什么我在模型中的 List 计数为 0?我找不到任何理由说明我的示例与 Stack Overflow 上公认的答案不同。有什么我遗漏的东西可以解释为什么我传回的数据值没有被添加到列表中吗?
使用 Chrome 的开发人员工具,我已经能够确认我有一个类似于以下内容的列表:
- 合作伙伴[0].IsActive = true
- 合作伙伴[0].IsActive = false
- 合作伙伴[0].Name = "嗨"
- 合作伙伴[0].ID = 1
- Partners[1].IsActive = false 等。
有任何想法吗?提前致谢。