Хорошо, у меня проблема с отображением раскрывающегося списка для выбора правильного значения при отображении. По умолчанию всегда используется нулевой индекс. Однако у меня есть представление в другом месте, где оно отлично отображается и выбирает правильное значение. Я не понимаю разницы.
Вот урезанная версия представления, которая работает правильно:
@model AppName.Models.Guest
@using (Html.BeginForm())
{
Attending Ceremony?<br />
@Html.DropDownListFor(x => x.ConfirmCeremony, new SelectList(new Dictionary<string, string>
{
{"No Answer", "No Answer"},
{"Yes", "Yes"},
{"No", "No"},
{"Maybe", "Maybe"}
}, "key", "value"))
@Html.ValidationMessageFor(x => x.ConfirmCeremony)
<br />
Attending Reception?<br />
@Html.DropDownListFor(x => x.ConfirmReception, new SelectList(new Dictionary<string, string>
{
{"No Answer", "No Answer"},
{"Yes", "Yes"},
{"No", "No"},
{"Maybe", "Maybe"}
}, "key", "value"))
@Html.ValidationMessageFor(x => x.ConfirmReception)
}
This view ' Модель s относится к настраиваемому типу Гость
, и когда она отображает раскрывающиеся списки присутствия на церемонии и Прием присутствующих, она правильно выбирает параметр, который хранится в модели. Итак, если я вернусь, чтобы отредактировать этого гостя, я смогу увидеть все, что я выбрал в последний раз, когда редактировал его, как и ожидалось. Это представление предназначено только для администратора и имеет больше опций, чем следующее представление.
Вот урезанная версия представления, которая не работает:
@model AppName.Models.Invite @*Invite has navigation property .Guests which is a collection of custom type Guest*@
@using (Html.BeginForm("SaveRSVP", "Wedding"))
{
@Html.HiddenFor(x => x.Id)
<table cellpadding="15px" cellspacing="0">
<tr>
<th>
Name
</th>
@if (Model.Guests.Any(x => x.InvitedToCeremony))
{
<th>
Attending Ceremony?
</th>
}
<th>
Attending Reception?
</th>
</tr>
@Html.EditorFor(x => x.Guests)
</table>
<br />
<input type="submit" value="Save Responses" />
}
Html.EditorFor (x => x.Gests)
загружает шаблон редактора, который содержит раскрывающиеся списки для посещения церемонии и присутствия на приеме. Вот шаблон редактора:
@model AlexAndNikki.Models.Guest
<tr>
<td>
@Html.HiddenFor(x => x.GuestID)
@Model.FullName()
</td>
@if (Model.Invite.Guests.Any(x => x.InvitedToCeremony))
{
<td>
@if (Model.InvitedToCeremony)
{
<text>
@Html.DropDownListFor(x => x.ConfirmCeremony, new SelectList(new Dictionary<string, string>
{
{"No Answer", "No Answer"},
{"Yes", "Yes"},
{"No", "No"},
{"Maybe", "Maybe"}
}, "key", "value"))
@Html.ValidationMessageFor(x => x.ConfirmCeremony)
</text>
}
else
{
<text>
No more invites.
</text>
}
</td>
}
<td>
@Html.DropDownListFor(x => x.ConfirmReception, new SelectList(new Dictionary<string, string>
{
{"No Answer", "No Answer"},
{"Yes", "Yes"},
{"No", "No"},
{"Maybe", "Maybe"}
}, "key", "value"))
@Html.ValidationMessageFor(x => x.ConfirmReception)
</td>
</tr>
Он отображает раскрывающиеся списки, и если я выбираю элементы и выполняю POST, значения правильно отправляются на сервер. Однако в раскрывающихся списках не выбрано правильное значение. Я даже отобразил значение, хранящееся в модели для редактора, в виде обычного текста над раскрывающимся списком, чтобы убедиться, что правильные значения поступают в редактор, и они есть. Это проблема с выпадающими списками. Я подозреваю, что это как-то связано с тем фактом, что этот редактор повторяется для каждого гостя
, прикрепленного к Пригласить
, но я не могу точно определить проблему.
ПРИМЕЧАНИЕ : Это То же самое происходит, если я не использую редактор, а вместо этого делаю что-то вроде этого в представлении:
@for (int i = 0; i < Model.Guests.Count; i++)
{
@Html.DropDownListFor(x => x.Guests.ToList()[i].ConfirmCeremony, new SelectList(new Dictionary<string, string>
{
{"No Answer", "No Answer"},
{"Yes", "Yes"},
{"No", "No"},
{"Maybe", "Maybe"}
}, "key", "value"))
}
Та же проблема существует здесь, раскрывающийся список не выберет значение в поле. Он просто остается в индексе 0.
Любая помощь приветствуется.