Извините, если это повторяющийся вопрос, я просмотрел связанные вопросы и не видел ничего очевидного.Получение SelectedValue из DropDown в ASP.NET MVC (C#) с использованием Entity Framework
Я использую EditModel с объектом Entity вместе с двумя SelectLists в нем. Проблема в том, что, как только я достиг своего POST-действия, SelectedValues для обоих выпадающих списков по-прежнему остаются теми же значениями по умолчанию, которые я задал в конструкторе для модели, независимо от того, что я на самом деле выбираю в браузере.
Мой конструктор устанавливает некоторые значения по умолчанию для SelectedValues, но они равны 0 и "" (которые не являются допустимыми значениями в выпадающих списках). У меня такое чувство, что проблема как-то вращается вокруг, но я расскажу подробнее.
Вот урезанная версия модели:
public class UserAccountModel
{
public UserAccount UserAccountData { get; set; } // Entity from EF
public SelectList Organizations { get; set; }
public SelectList Roles { get; set; }
public UserAccountModel() : this(null)
{
}
public UserAccountModel(UserAccount obj)
{
UserAccountData = (obj == null) ? new UserAccount() : obj;
// default selected value
int orgChildId = (UserAccountData.Organization == null) ? 0 : UserAccountData.Organization.ID;
string roleChildId = (UserAccountData.Role == null) ? "" : UserAccountData.Role.Name;
// go get the drop down options and set up the property binding
using (UserAccountRepository rep = new UserAccountRepository())
{
Organizations = new SelectList(rep.GetOrganizationOptions(), "ID", "ID", orgChildId);
Roles = new SelectList(rep.GetRoleOptions(), "ID", "Name", roleChildId);
}
}
public void UpdateModel()
{
UserAccountData.Organization = Organizations.SelectedValue as Organization;
UserAccountData.Role = Roles.SelectedValue as Role;
}
}
Это часть Dropdowns представления:
<div class="field">
<label for="ID">Organization:</label>
<%= Html.DropDownList("ID", Model.Organizations) %>
</div>
<div class="field">
<label for="Name">Role:</label>
<%= Html.DropDownList("Name", Model.Roles) %>
</div>
я мог бы сделать что-то глупое и очевидное здесь. Примеры гораздо более прямолинейны при использовании словаря ViewData, но я не смог найти слишком много примеров, пытаясь использовать прямую привязку модели для SelectLists.
Любая помощь очень ценится!
Chris
Какой код контроллера выглядит? – Lazarus
Можете ли вы опубликовать некоторый код структуры UserAccountData, если вы привязываетесь к ViewModel, тогда я думаю, что имя selectlist должно быть «UserAccountData.ID» и «UserAccountData.Name», im not sure, потому что я не знаю структуру UserAccountData – JOBG
UserAccountData - это объект, код которого генерируется Entity Framework. Тем не менее, еще одна часть информации, которую я должен был упомянуть, заключается в том, что Организация и роль являются внешними ключами в таблице UserAccount в БД. Когда я добавляю UserAccount, я хочу иметь возможность выбирать Организацию и Роль из существующих выборов в БД. Метод UpdateModel() в модели выше использовался для добавления выбранной организации и роли в UserAccountData – Chris