ASP.NET MVC xVal со строго типизированной моделью представления - PullRequest
0 голосов
/ 17 ноября 2009

Я не могу получить проверку 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.

Благодарю за любую помощь!

Ответы [ 3 ]

0 голосов
/ 02 апреля 2010

С точки зрения Адриана, мы не можем видеть, используете ли вы DataAnnotations в вашей модели представления, или если вы используете какой-либо бегун, описанный в этой статье . Вам нужно будет использовать что-то вроде DataAnnotationsValidationRunner, о котором упоминается для выполнения проверки каждого свойства вашей модели представления, как указано в используемых вами атрибутах проверки (например, Обязательный, Диапазон и т. Д.).

В основном шаги будут:

  1. Получите обновленную модель представления со строгим типом из формы.
  2. Передайте эту модель вашему DataAnnotationsValidationRunner, собирая все ошибки, которые в результате
  3. Если были какие-либо ошибки (объекты ErrorInfo), выведите их как RulesException
  4. Поймайте RulesException и добавьте исключения проверки в вашу модель, используя метод AddModelStateErrors исключения
  5. Проверьте, если ModelState.IsValid, и если нет, представляют ваше представление, которое благодаря обработке исключений теперь будет связывать ошибки с вашей моделью представления. Вы должны убедиться, что у вас есть соответствующие вспомогательные вызовы ValidationMessage html, на которые также ссылается связанная статья.
0 голосов
/ 01 сентября 2010

Я думаю, что проблема в том, что вы не используете префиксы. Если вы отлаживаете ModelState, вы можете увидеть проверки для таких вещей, как «.FirstName», хотя они должны быть похожи на «FirstName». Из-за этого на валидации и на стороне клиента не отображаются эти сообщения об ошибках валидации.

Я думаю, что это ошибка в xVal.

0 голосов
/ 17 ноября 2009

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

...