ASP.NET MVC xVal со строго типизированной моделью представления

StackOverflow https://stackoverflow.com/questions/1747864

  •  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 и т. д.).

В основном шаги будут следующими:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top