ASP.NET MVC xVal со строго типизированной моделью представления
-
20-09-2019 - |
Вопрос
я не могу получить проверка xVal для работы со строго типизированными моделями представлений.
Кажется, что каждому методу в xVal нужен префикс, который не используется при работе со строго типизированными моделями представлений.
Мое представление содержит код, похожий на этот:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ContactForm>" %>
<%= Html.TextBox("firstName", Model.FirstName) %>
И в контроллере идет следующий код:
try
{
var theModel = form.ToModel();
_contactRepository.Save(theModel);
}
catch (RulesException ex)
{
ex.AddModelStateErrors(ModelState, string.Empty); // Passing string.Empty for prefix, since I don't use prefixes.
}
return View(form);
Однако приведенный выше код не работает.Я наверняка что-то упустил, но не знаю что.Я впервые использую xVal.
Благодарен за любую помощь!
Решение
Я думаю, проблема в том, что вы не используете префиксы.Если вы отлаживаете ModelState, вы можете увидеть проверки для таких вещей, как «.FirstName», хотя они должны быть похожи на «FirstName».Из-за этого сводные данные проверки на стороне клиента и прочее не отображают эти сообщения об ошибках проверки.
Я думаю, что это ошибка в xVal.
Другие советы
По мнению Адриана, мы не можем видеть, используете ли вы DataAnnotations в своей модели представления или используете ли вы какой-либо бегун, описанный в Эта статья .Вам нужно будет использовать что-то вроде DataAnnotationsValidationRunner, о котором он упоминает, для выполнения проверки каждого свойства вашей модели представления, как указано в используемых вами атрибутах проверки (например, Required, Range и т. д.).
В основном шаги будут следующими:
- Получите обновленную строго типизированную модель представления из формы.
- Передайте эту модель своему
DataAnnotationsValidationRunner
, собирая любые ошибки, возникающие в результате - Если были какие-либо ошибки (объекты ErrorInfo), выдайте их как
RulesException
- Поймать
RulesException
и добавьте исключения проверки в свою модель, используя исключениеAddModelStateErrors
метод - Проверьте, есть ли
ModelState.IsValid
, а если это не так, представьте свое представление, которое благодаря вашей обработке исключений теперь будет иметь ошибки, привязанные к вашей модели представления.Вам необходимо убедиться, что у вас есть соответствующиеValidationMessage
html-помощники, на которые также ссылается связанная статья.
Ваше сообщение не достаточно краткое, чтобы я мог понять, что происходит не так, но вы можете найти полностью работающий демонстрационный веб-сайт в конце статьи. эта статья в блоге.В статье также шаг за шагом описывается все, что вам нужно сделать, так что это должно помочь вам запустить xVal.