#asp.net #asp.net-mvc-4 #razor #strongly-typed-view
#asp.net #asp.net-mvc-4 #razor #строго типизированный-просмотр
Вопрос:
Следующий код «работает», но конечные результаты не такие, как я ожидал. Я получаю dropdownlist
со всеми странами, как и ожидалось; по умолчанию Соединенные Штаты находятся в самом верху списка. Но Соединенные Штаты по-прежнему остаются выбираемыми, если вы прокрутите список вниз, теперь у меня есть две записи «Соединенные Штаты»…
Также стоит отметить, что при моей проверке выбор по умолчанию «Соединенные Штаты» считается недействительным, то есть он показывает мне сообщение о проверке «пожалуйста, выберите страну». Если я затем выберу запись «Соединенные Штаты», расположенную дальше по списку, сообщение о проверке исчезнет.
Почему это происходит? Я неправильно это понимаю?
ПРОСМОТР МОДЕЛИ
public class ProfileViewModel
{
public class CountriesDropdown
{
public string defaultSelection { get; set; }
public IEnumerable<SelectListItem> dropdownViewModel { get; set; }
}
public CountriesDropdown countriesDropdownViewModel { get; set; }
[Required]
[DataType(DataType.Text)]
[StringLength(100)]
[Display(Name = "Country of Residence: ")]
public string CountryResidence { get; set; }
}
Вид
@Html.DropDownListFor(p => p.CountryResidence, Model.countriesDropdownViewModel.dropdownViewModel, Model.countriesDropdownViewModel.defaultSelection, new { style = "max-width: 215px;", id = "cbCountry", @class = "validate[required]" })
КОНТРОЛЛЕР
private ProfileViewModel PopulateAllDropdown(ProfileViewModel model)
{
model.countriesDropdownViewModel = new ProfileViewModel.CountriesDropdown();
model.countriesDropdownViewModel.dropdownViewModel = _DBCall.GetCountriesDropdownListPopulated();
model.countriesDropdownViewModel.defaultSelection = "United States";
return model;
}
Комментарии:
1. конечно, он покажет два, один раз он загружается из базы данных, а второй вы вводите в текст по умолчанию, который в большинстве случаев выбирает один или выбирает страну
2. если вы показываете
GetCountriesDropdownListPopulated()
определение, вам нужно установить выбранное по умолчанию из их3. Спасибо, Эхса Саджад, после прочтения вашего комментария я смог это исправить. Я переместил выбор по умолчанию внутри
GetCountriesDropdownListPopulated()
кода и работает нормально. Почему бы не опубликовать его в качестве ответа, чтобы я мог его принять?
Ответ №1:
Очевидно, что он будет показан два раза в раскрывающемся списке, потому что один раз он заполняется из базы данных с помощью GetCountriesDropdownListPopulated()
, а второй, который отображается, потому что вы добавляете его в качестве текста по умолчанию, который в большинстве случаев мы помещаем Выберите один или выберите страну, поэтому вам нужно выбрать выбор по умолчанию внутри GetCountriesDropdownListPopulated()
метода.
Ответ №2:
пожалуйста, установите AppendDataBoundItems=»false» в выпадающем списке
Например:
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="false">
</asp:DropDownList>