У меня есть модель представления, которая содержит ряд свойств, список SelectList и массив дочерних объектов.
public class RoundViewModel
{
public int RoundId { get; set; }
public string RoundName { get; set; }
public SelectList Teams { get; private set; }
public List<GameViewModel> Games { get; set; }
}
public class GameViewModel
{
public int HomeTeamId { get; set; }
public int AwayTeamId { get; set; }
public DateTime GameTimeGMT { get; set; }
}
Может быть разное количество игр за раунд, и я пытаюсь привязать один и тот же Teams
SelectList к каждому выпадающему списку, который я помещаю на страницу:
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<%= Html.HiddenFor(model => model.CodeId) %>
<div class="editor-label">
<%= Html.LabelFor(model => model.RoundNumber) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.RoundNumber) %>
<%= Html.ValidationMessageFor(model => model.RoundNumber) %>
</div>
<div class="editor-label">
<%= Html.LabelFor(model => model.RoundName) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.RoundName) %>
<%= Html.ValidationMessageFor(model => model.RoundName) %>
</div>
<%
for (int i = 0; i < Model.Games.Count; i++)
{
%>
<div class="editor-label">
Game:
</div>
<div class="editor-field">
<%= Html.DropDownList("Games[" + i + "].HomeTeamId", Model.Teams, "--No Game--", new { value = Model.Games[i].HomeTeamId })%> VS
<%= Html.DropDownList("Games[" + i + "].AwayTeamId", Model.Teams, "--No Game--", new { value = Model.Games[i].AwayTeamId })%>
<%= Html.TextBox("Games[" + i + "].GameTimeGMT", Model.Games[i].GameTimeGMT, new { Class = "calendar", value = Model.Games[i].GameTimeGMT })%>
</div>
<% } %>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>
Аналогичное представление прекрасно работает для операции Create, но я не могу установить существующий выбор в каждом из раскрывающихся списков. Вы можете видеть, что я явно устанавливаю дату и время для каждой игры.
Строка new { value = Model.Games[i].HomeTeamId }
устанавливает атрибут для элемента <select>
html, но, очевидно, это не сработает. Я думал об установке другого атрибута и использовании jQuery для установки выбранного элемента, но он кажется еще более хакерским, чем существующий код.
Я довольно новичок в MVC, поэтому могу определенно оценить, правильно ли я поступаю. Кто-нибудь может помочь?