Проверка правильности элемента DropDownListFor в MVC3 - PullRequest
0 голосов
/ 28 сентября 2011

Я использую jQuery Unobrtusive Validation с MVC3 для проверки элемента формы DropDownListFor, но он не работает.

Проверяется очень хорошо, если я изменяю DropDownListFor на TextBoxFor - и также проверяет другие поля формы. У меня есть несколько DropDownListFor элементов, в зависимости от того, что доступно в базе данных. Таким образом, цикл.

Вот мой код:

ViewModel:

public class ParentViewModel  
{ 
// some other stuff here public
List<Children> Children { get; set; } 
}

public class ChildrenViewModel  
{ 
    public SelectList PossibleNames { get; set; } 
    [Required(ErrorMessage = "Select a name")] 
    public int ChosenNameId { get; set; } 
}

Вид:

@for (int i = 0; i < Model.Children.Count; i++) 
{
@Html.LabelFor(model => modell.Children[i].ChosenNameId, "Name")
@Html.ValidationMessageFor(model => modell.Children[i].ChosenNameId)
@Html.DropDownListFor(model => modell.Children[i].ChosenNameId,
Model.Children[i].PossibleNames, "Choose a name") 
}

Надеюсь, этих выписок достаточно, чтобы выявить ошибку ...

Любые намеки на то, почему это не работает?

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Попробуйте заменить:

[Required(ErrorMessage = "Select a name")] 
public int ChosenNameId { get; set; } 

по:

[Required(ErrorMessage = "Select a name")] 
public int? ChosenNameId { get; set; } 

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

0 голосов
/ 29 сентября 2011

Я понял это сам.Кажется, это ошибка в MVC3, из-за которой наборы списков выбора не проверяются .Эта проблема уже обсуждалась несколько раз, например:

Лично я решил это, просто вручную добавив data-val-required и data-val вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...