Проверка DropDownList ASP.NET MVC - PullRequest
1 голос
/ 16 мая 2010

у меня

[DisplayName("Country")]
public List<SelectListItem> Countries { get; set; }

свойство в классе Model View строгого типа для DropDownList.

Когда я пытаюсь проверить, является ли ModelState.IsValid при обратной передаче формы всегда ложным и ошибка для Страны говорит "Не удается преобразовать [значение] в SelectListItem" или что-то в этом роде.

Я выяснил, что нет прямого отображения для выпадающего выбранного значения (похоже, мне придется читать значение из коллекции значений формы), но как я могу игнорировать привязку и проверку для свойства List? Я просто хочу, чтобы атрибут ModelState.IsValid был истинным, если все остальные поля заполнены правильно.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 16 мая 2010

Наконец-то я использовал обходной путь.

Моя модель сейчас:

class Model
{
...
  [DisplayName("Country")]
  List<Country> Countries;

  Guid CountrySelected    <-- new field! 
...
}

Я использую Html.DropDownList ("CountrySelected", Model.Countries.Select (x => new SelectItemList ..)

вместо HtmlDropDownListFor. HtmlDropDownListFor сопоставляет [id selected] со списком, а не со свойством CountrySelected. Теперь [id selected] сопоставлен с CountrySelected

0 голосов
/ 16 мая 2010

Это потому, что представленное значение имеет тип String или Country, а не список SelectListItem или List<SelectListItem>.

Что вы привязываете к элементу управления в пользовательском интерфейсе?

попробуй

[DisplayName("Country")]
public List<Country> Countries { get; set; }

Где Country - это имя типа из вашего DAL.

EDIT: Судя по полученной вами ошибке, модель ожидает, что значение будет String, поэтому попробуйте заменить List<Country> на List<String>.

[DisplayName("Country")]
public List<string> Countries { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...