如果我有一个由嵌套的复杂类型组成的对象,例如具有
List<Fu>
和A
List<Bar>
public class WarViewModel
{
List<Fu> Fu { get; set; }
List<Bar> Bar { get; set; }
}
public class Fu
{
public int Id {get;set;}
public Soldier Private { get; set; }
}
public class Bar
{
public int Id {get;set;}
public Soldier Private { get; set; }
}
public class Soldier
{
public int Id {get;set;}
public string Name { get; set; }
public int Age { get; set; }
}
如果我有一个
form
select
列表,可以是fu或bar,其中每个
option
表示列表中的每个士兵,该选项具有包含ID、名称和年龄的属性,例如
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<WarViewModel>" %>
<% using (Html.BeginForm("WarAction", "War")) { %>
<% foreach (var soldier in Fu) %>
<select class="fu">
<option id='<%= soldier.Id %>' age='<%= soldier.Age %>'><%= soldier.Name %></option>
</select>
<% } %>
<% foreach (var soldier in Bar) %>
<select class="bar">
<option id='<%= soldier.Id %>' age='<%= soldier.Age %>'><%= soldier.Name %></option>
</select>
<% } %>
<% } %>
我需要使用什么命名约定,以便在提交表单时,将用两个列表中选择的士兵填充以下操作方法的warviewModel?
public ActionResult WarAction(WarViewModel war)
{
return View();
}
我现在的理解是模型绑定器不知道士兵是哪个,所以它不知道哪个ID与哪个士兵关联。我有办法解决这个问题吗?我知道上面的代码无法验证,但我正在尝试为自己实现概念验证。
另外,为了使这种方法能够得到休息,需要更改什么?