Я следую подходу, описанному здесь для этого.
У меня проблема с проверкой раскрывающегося списка с помощью xval, привязка MVC, кажется, делает неправильный вывод, позволяя операции пройти проверку, но состояние модели сохраняет исключение привязки и делает страницу недействительной, поэтому я получаю ситуацию, когда операция разрешено выполнение с недопустимыми данными, но страница недействительна, поэтому пользователь может предположить, что проверка не удалась.
Это может прояснить
Это мой раскрывающийся список, предположим, что пользователь ничего не сделал, поэтому выбрано «Пожалуйста, выберите».
Do you like cheese:
<select name="Favourites.Cheese">
<option>Please Select</option>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
<%=Html.ValidationMessage("Favourites.Cheese")%>
Это действие контроллера из сообщений, MVC сопоставляет значение false с fav.cheese,
public ActionResult Create(Favourites fav)
{
try
{
_favTask.Create(fav);
}
catch (RulesException ex)
{
ex.AddModelStateErrors(ModelState, "Favourites");
}
if(!ModelState.IsValid)
{
//redirect back
}
//other stuff
}
Имущество было отнесено
pulic class Favourites
{
[Required]
public bool Cheese{get;set;}
}
Никаких исключений не генерируется, потому что fav.cheese имеет значение
public int Create(Favourites fav)
{
var errors = DataAnnotationsValidationRunner.GetErrors(fav);
if (errors.Any())
throw new RulesException(errors);
//create fav
}
Но когда фокус возвращается к контроллеру, ModelState.Isvalid принимает значение false, поэтому from перезагружается с сообщением Значение «Пожалуйста, выберите» недействительно. Как мне это предотвратить, и как это сделать Я использую xVal метод проверки «Пожалуйста, выберите значение»?