Проверка свойств объекта в MVC (с использованием веб-сервиса) - PullRequest
1 голос
/ 16 сентября 2010

У меня есть сайт ASP.Net MVC, который подключается к веб-сервису.

Модель представления сайта содержит объекты для каждой группы необходимых служебных данных AccountDetails (содержащие AccountId, AccountType и т. Д.), ContactDetails (содержащие имя, адрес и т. Д.) И т. Д.

Служба имеет метод CreateUser (), который принимает эти объекты в качестве параметров, а затем выполняет всю саму проверку - возвращая объект, который имеет массив любых найденных ошибок, включая имя объекта. конкретное свойство / поле.

Я хотел бы знать, есть ли способ передать эти возвращенные данные об ошибках в DataAnnotations или что-то еще.

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

== ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ, ЧТОБЫ УЗНАТЬ НЕМНОГО ==

Представьте, что я локально (в пределах модели представления) создаю класс ContactDetails, я мог бы очень просто сделать это

public class ContactDetails
{
    [IsRequired()]
    [CustomAttributeofSomekind]
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

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

Мы не хотим этого делать - вместо этого я, если (в приведенном выше сценарии) внезапно требуется ContactDetails.LastName и должно быть не более 10 символов - это нужно только обновить в веб-службе.

1 Ответ

2 голосов
/ 16 сентября 2010

Я думаю, у вас есть два варианта:

  1. Создайте класс User, чтобы обернуть метод CreateUser (), и добавьте к нему DataAnnotations (это то, что я хотел бы сделать, он позволяет вам использовать строгую типизацию.)
  2. Вызовите метод CreateUser () непосредственно из действия контроллера и используйте проверку на стороне сервера. Добавьте каждую ошибку проверки в результате CreateUser () в коллекцию ModelState.Errors, если нарушены какие-либо правила проверки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...