2014-12-08 3 views
0

У меня есть следующий DropDownListFor, который отображает список состояний для пользователя на выбор. Как я могу по умолчанию выпадающее меню быть пустым. В настоящее время он по умолчанию первого состояния в алфавитном порядке («Аляска»)По умолчанию пустой вариант для выпадающего меню MVC

@Html.DropDownListFor(m => m.User.StateID, 
    new SelectList(Model.User.States.Where(filter => filter.Active && (filter.CountryID == 1)) 
        .Select(item => new 
         { 
          ID = item.StateProvinceID, 
          Description = item.Name 
         }), 
        "ID", 
        "Description", 
        Model.User.StateID), 
    new { @data_bind = "value: user.StateID, enable:!isSiteUser()", tabindex = "10" }) 
+0

Вы прочитали этот ответ? Помогает ли это? http://stackoverflow.com/a/7229707/1559978 –

+0

Я посмотрел на это и на несколько других вопросов, но мне не удалось получить какие-либо предложения для работы. Я продолжаю получать ошибки в HTML, когда пытаюсь добавить что-то для пустого значения по умолчанию. – AtlasBowler

+1

Я понял. Одно из предложений действительно «http://stackoverflow.com/questions/506001/asp-net-mvc-dropdown-with-a-default-empty-option». Я просто помещал его в неправильное место. Это неловко. – AtlasBowler

ответ

0

Я понял, что один из посланных вопросов имел правильный ответ на мою проблему. Я просто пытался использовать его неправильно. Я добавлял «string.Empty» в неправильное расположение. Это решение.

@Html.DropDownListFor(m => m.User.StateID, 
new SelectList(Model.User.States.Where(filter => filter.Active && (filter.CountryID == 1)) 
       .Select(item => new 
        { 
         ID = item.StateProvinceID, 
         Description = item.Name 
        }), 
       "ID", 
       "Description", 
       Model.User.StateID), 
       string.Empty, 
new { @data_bind = "value: user.StateID, enable:!isSiteUser()", tabindex = "10" }) 
+2

Это очень плохая форма, чтобы иметь всю эту логику, на ваш взгляд. Используйте модель просмотра, чтобы удерживать выбранный список, или вы можете использовать 'ViewBag'. 'ViewBag' тоже ужасен, но это, по крайней мере, лучше, чем запрос прямо на ваш взгляд. –

+0

Я не писал вид. В настоящее время мне поручено сделать эту модификацию. Мы планируем делать рефакторинг без файлов, поэтому я уверен, что он будет включен. Я действительно ценю ваш вклад. – AtlasBowler

+3

Не быть воюющим, но планировать рефакторинг - это как планировать тестирование. Это никогда не произойдет, если вы просто не сделаете это. Лучшее время для рефакторинга - это когда вы находитесь в коре. Рефакторинг должен быть непрерывным и бесконечным процессом. Всякий раз, когда вы касаетесь части кода, вы должны не только делать какие-либо изменения, но и реорганизовывать все, что им требуется. Так улучшается код. Подборка какой-то будущей даты для перехода и реорганизации всего кода - мечта о трубе. –