Mis*_*aak 4 asp.net-mvc binding viewmodel
我有一个由Applicant对象和TeamMember集合组成的视图模型.当我发布模型时,Team集合始终为null.我已经尝试将收藏品从我的原件IEnumarable改为a,List但这并没有什么区别.所以我更改了控制器编辑操作以接受FormCollection,并验证了有数据viewModel["member.FirstName"].我迷失了为什么绑定不起作用.我试图尽可能地清理我的代码示例,但我对我所缺少的内容感到困惑.任何帮助是极大的赞赏!
查看模型属性
public class MyViewModel
{
public Applicant ApplicantInfo { get; set; }
public List<TeamMember> TeamMembers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
调节器
[HttpPost]
public ActionResult Edit(MyViewModel viewModel)
{
// viewModel.ApplicantInfo has the form data
// viewModel.TeamMembers = null
}
Run Code Online (Sandbox Code Playgroud)
视图
<% 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>
<% } %>
Run Code Online (Sandbox Code Playgroud)
我相信与集合中的项相关联的输入标记(当模型本身不是集合时)需要在name属性中具有索引,然后才能将发布的数据绑定到视图模型.这是我通常做到这一点的方式......
<% 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>
<% } %>
Run Code Online (Sandbox Code Playgroud)
我也使用了Shea建议的模板,但我有更多的代码试图强制它渲染括号/索引.
<% foreach (var member in Model.TeamMembers) { %>
<%: Html.EditorFor(x =>
member,
"TeamMember",
"TeamMembers["+(member.Number-1)+"]",
new { MemberTypes = Model.GetMemberTypes(member.MemberType.TypeId) })%>
<% } %>
Run Code Online (Sandbox Code Playgroud)
这是Phil Haack关于该主题的一篇陈旧但仍然相关的文章.
| 归档时间: |
|
| 查看次数: |
3991 次 |
| 最近记录: |