Если у меня есть объект, который состоит из вложенных сложных типов, например ViewModel, который имеет 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, Name и Age, такие как
<%@ 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();
}
Теперь я понимаю, что связыватель модели не будет знатьсолдат, который, так что он не будет знать, какой идентификатор связан с каким солдатом.Есть ли способ для меня обойти это?Я знаю, что приведенный выше код не будет проверен, но я пытаюсь реализовать для меня подтверждение концепции.
Кроме того, что необходимо изменить, чтобы сделать этот подход RESTful?