gpt4 book ai didi

asp.net-mvc - 在 MVC 中绑定(bind)集合

转载 作者:行者123 更新时间:2023-12-05 00:38:59 25 4
gpt4 key购买 nike

我有一个由 Applicant 组成的 View 模型对象和 TeamMember收藏。当我将模型发布回来时,团队集合始终为空。我已尝试更改我原来的收藏 IEnumarableList但这并没有什么不同。所以我更改了 Controller 编辑操作以接受 FormCollection ,并验证 viewModel["member.FirstName"] 中有数据.我不知道为什么绑定(bind)不起作用。我试图尽可能多地清理我的代码示例,但我对我缺少的东西感到困惑。任何帮助是极大的赞赏!

查看模型属性

public class MyViewModel
{
public Applicant ApplicantInfo { get; set; }
public List<TeamMember> TeamMembers { get; set; }
}

Controller
[HttpPost]
public ActionResult Edit(MyViewModel viewModel)
{
// viewModel.ApplicantInfo has the form data
// viewModel.TeamMembers = null
}

查看
<% using (Html.BeginForm())
{%>
<h3>
<a href="#">Applicant Information</a>
</h3>
<label>
City
<%: Html.TextBoxFor(m => Model.ApplicantInfo.City)%>
</label>
<label>
State
<%: Html.TextBoxFor(m => Model.ApplicantInfo.State)%>
</label>

<h3>
<a href="#">Team</a>
</h3>
<div>
<% foreach (var member in Model.TeamMembers)
{ %>
<div class="editor-field">
<%: Html.DropDownList("member.Type", Model.GetMemberTypes(member.MemberType.TypeId))%>
</div>
<div class="editor-field">
<%: Html.EditorFor(m => member.FirstName)%>
</div>
<div class="editor-field">
<%: Html.EditorFor(m => member.LastName)%>
</div>
<div class="editor-field">
<%: Html.EditorFor(m => member.Title)%>
</div>
<%} %>
</div>
<p>
<input type="submit" value="Save" />
</p>
<% } %>

最佳答案

我相信与集合中的项目关联的输入标签(当模型本身不是集合​​时)需要在 name 属性中具有索引,然后才能将发布的数据绑定(bind)到 View 模型。这是我通常完成此操作的方式...

<% for (int i=0; i<Model.TeamMembers.Count; i++) { %>
<div class="editor-field">
<%: Html.EditorFor(m => m.TeamMembers[i].FirstName)%>
</div>
<div class="editor-field">
<%: Html.EditorFor(m => m.TeamMembers[i].LastName)%>
</div>
<% } %>

我也使用了 Shea 建议的模板,但我有更多代码试图强制它呈现括号/索引。
<% foreach (var member in Model.TeamMembers) { %>
<%: Html.EditorFor(x =>
member,
"TeamMember",
"TeamMembers["+(member.Number-1)+"]",
new { MemberTypes = Model.GetMemberTypes(member.MemberType.TypeId) })%>
<% } %>

这是 old but still relevant article来自 Phil Haack 关于这个话题。

关于asp.net-mvc - 在 MVC 中绑定(bind)集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4949991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com