Я знаю, что в этой теме уже есть темы, и я последовал за некоторыми из них без успеха.DropDownListFor не выбирает правильное значение
Проблема: У меня есть DropDownListFor, у которого есть список стран. Когда я выбираю страну и отправлю форму, она сохраняется правильно в базе данных, но когда я снова загружаю форму для ее редактирования, она всегда показывает первый элемент. У меня есть другие выпадающие списки, реализованные аналогичным образом, и они работают правильно.
То, что я пытался
Я изменил название свойства, потому что я прочитал, что при использовании ViewBag передать список, чтобы заполнить выпадающий список, он может не выбрать правильное значение. НЕТ успеха.
Я заменил viewbag для объекта в ViewModel. Нет успеха.
Кодекс
Вид:
<div class="input-group col-md-5">
@Html.DropDownListFor(model => Model.CountryCode, new SelectList(Model.Countries, "Alpha2Code", "Name"), new { @class = "form-control" })
</div>
Контроллер:
var userViewModel = await _userLogicLayer.GetUserViewModelAsync(MySession.UserId);
userViewModel.Countries = LocaleLogicLayer.Countries;
return View(userViewModel);
LocaleLogicLayer:
public static class LocaleLogicLayer
{
public static List<Country> Countries { get; set; }
static LocaleLogicLayer()
{
Countries = new List<Country>
{
new Country() {Alpha2Code = "PT", Name = "Portugal"},
new Country() {Alpha2Code = "BR", Name = "Brasil"},
new Country() {Alpha2Code = "XX", Name = "Outro"}
};
}
}
GetUserViewModelAsync
public async Task<UserViewModel> GetUserViewModelAsync(string userId)
{
var userProfile = await _userProfileRepository.GetAsync(userId);
var userViewModel = new UserViewModel();
if (userProfile != null)
{
userViewModel.Id = userProfile.Id;
userViewModel.LinkedInProfile = userProfile.LinkedInProfile;
userViewModel.Nif = userProfile.Nif;
userViewModel.Bi = userProfile.Bi;
userViewModel.Picture = userProfile.Picture;
userViewModel.CountryCode = userProfile.CountryCode;
}
return string.IsNullOrWhiteSpace(userViewModel.Id) ? null : userViewModel;
}
Я ценю вас помочь. Это должна быть очень простая ошибка, но я не нахожу ее. спасибо.
Edit (новый подход)
Новый DropDownlList
@Html.DropDownListFor(model => model.CountryCode, (SelectList)ViewBag.CountriesX, new { @class = "form-control" })
(и до сих пор не работает, так расстраивает)
Какова ценность 'userViewModel.CountryCode' в коде контроллера? – ekad
Если я выбираю Brasil, это «BR», Португалия «PT» и «XX» в остальном случае – sergiommaria
Да, у него есть. Он корректно сохраняет базу данных и также считывает правильное значение. проблема в том, что представление просто игнорирует его. – sergiommaria