Это похоже на действительно базовый сценарий, но я думаю , что у него нет счастливого конца.
У меня есть простой класс проекта:
public class Project
{
[Required(ErrorMessage = "Project title is required")]
[DisplayName("Project Title")]
public string Title { get; set; }
[DisplayName("Related Categories")]
public Category Categories { get; set; }
}
Я хочу убедиться, что выбрана хотя бы одна связанная категория. Как я могу проверить это в представлении, используя Html.EnableClientValidation () и декораторы в модели? Если это невозможно, каков запасной вариант?
В равной степени разочаровывает и, вероятно, препятствует валидации то, что я не могу сделать ...
<%= Html.ListBoxFor(m => m.Project.Categories,
new SelectList(Model.Categories, "Id", "Name"))%>
... потому что это попытается связать значение формы Project.Categories (строковый массив) с тем, что должно быть типом Category, но не сможет (я получаю ошибку "Преобразование параметра из типа" System.String 'для типа не удалось, потому что никакой преобразователь типов не может конвертировать между этими типами "). Поэтому мне нужно изменить имя формы на что-то вроде m.Categories, таким образом, отделившись от класса Product, и, следовательно, от любой логики проверки, которой я бы хотел украсить его.
Ух ты, для меня это безумие. Мы не можем проверить простой список множественного выбора, используя декораторы MVC2?