Я следую подходу, обозначенному здесь , чтобы сделать это.
У меня проблема с проверкой выпадающего выбора с помощью 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")%>
Это действие Controller для сообщений из тоже, 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 выдается как ложное, поэтому значение from перезагружается с сообщением Значение «Пожалуйста, выберите» недопустимо. Как мне это предотвратить, как я могу использовать метод проверки xVal «Пожалуйста, выберите значение»?