2014-07-01 4 views
0

Следующий код «работает», но конечные результаты не то, что я ожидал. Я получаю dropdownlist со всеми странами, как и ожидалось; по умолчанию Соединенные Штаты находятся в самой верхней части списка. Но Соединенные Штаты по-прежнему остаются доступными для выбора, если вы прокрутите список вниз, теперь у меня есть две записи «Соединенные Штаты» ...Попытка понять DropDownListFor, выбор по умолчанию отображается дважды?

Также стоит отметить, что по моей проверке выбор по умолчанию «Соединенные Штаты» считается недействительным, то есть он показывает мне сообщение для подтверждения «выберите страну». Если я затем выберем запись «Соединенные Штаты», расположенную дальше по списку, сообщение подтверждения исчезнет.

Почему это происходит? Я понимаю это неправильно?

VIEW МОДЕЛЬ

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; } 
} 

VIEW

@Html.DropDownListFor(p => p.CountryResidence, Model.countriesDropdownViewModel.dropdownViewModel, Model.countriesDropdownViewModel.defaultSelection, new { style = "max-width: 215px;", id = "cbCountry", @class = "validate[required]" }) 

CONTROLLER

private ProfileViewModel PopulateAllDropdown(ProfileViewModel model) 
{ 
    model.countriesDropdownViewModel = new ProfileViewModel.CountriesDropdown(); 
    model.countriesDropdownViewModel.dropdownViewModel = _DBCall.GetCountriesDropdownListPopulated(); 
    model.countriesDropdownViewModel.defaultSelection = "United States"; 

    return model; 
} 
+0

Конечно, он будет показывать два раза, когда он всплывает из базы данных, а второй - в тексте по умолчанию, который в большинстве случаев выбирает один или выбирает страну. –

+0

cab вы показываете '' Определение GetCountriesDropdownListPopulated() '', которое необходимо установить default выбрал один из своих –

+0

Спасибо, Эхса Саджад, прочитав ваш комментарий, я смог его исправить. Я переместил выделение по умолчанию в код 'GetCountriesDropdownListPopulated() и отлично работает. Почему бы не опубликовать его как ответ, чтобы я мог его принять? – Dayan

ответ

1

Очевидно, что это будет показано в два раза внутри выпадающего списка, потому что один раз он заполняется из базы данных с помощью GetCountriesDropdownListPopulated() и второй, который показано, потому что вы добавляете его как текст по умолчанию, который в большинстве случаев мы помещаем Выберите один или Выберите страну, поэтому вам нужно выбрать выбор по умолчанию в методе GetCountriesDropdownListPopulated().

0

пожалуйста установите AppendDataBoundItems = «ложь» в DropDownList

Для примера:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="false"> 
    </asp:DropDownList>