如果我有一个由嵌套复杂类型组成的对象,例如具有List<Fu>
和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
包含2个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与哪个士兵相关联。我有办法解决这个问题吗?我知道上面的代码不会验证,但我正在尝试为自己实现一个概念验证。
此外,需要更改什么才能使这种方法成为RESTful?
答案 0 :(得分:1)