Какое хорошее соглашение об именовании HTML для связывания моделей сложных вложенных типов? - PullRequest
0 голосов
/ 13 сентября 2010

Если у меня есть объект, который состоит из вложенных сложных типов, например 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?

1 Ответ

1 голос
/ 13 сентября 2010

То, что вы пытаетесь сделать, уже поддерживается:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...