Как добавить модельное состояние в мою библиотеку? - PullRequest
1 голос
/ 17 октября 2011

В моем классе БД у меня есть такая функция:

        //Check if the user login exists in the DB if this is a new user. 
        if ((userModelItem.UserId == 0) || (userModelItem.UserId == null))
        {
            if (_db.ABUsers.Count(s => s.Loggin1 == user.Loggin1 || s.Loggin1 == user.Loggin2 ||
                s.Loggin2 == user.Loggin1 || s.Loggin2 == user.Loggin2) > 0)
            {
                var exLog = new ExceptionThrowHandler();
                exLog.SaveNewException("SaveUserModelItem", "ABUserRepository", "Loggin1 or loggin2 exists in DB");
                return null;

Можно ли здесь также попытаться добавить ошибку в состояние модели, не передавая состояние состояния как объект функции? IE я могу получить модем от httpcontext.current или что-то еще?

Ответы [ 3 ]

0 голосов
/ 21 октября 2011

Трудно дать много советов, не зная, откуда вы пытаетесь вызвать эту функцию, так как это влияет на то, что вам может быть доступно.Насколько я знаю, невозможно получить доступ к ModelState из HttpContext.Current, хотя знание большего о вашем обстоятельстве может помочь найти другую работу.

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

0 голосов
/ 21 октября 2011

Почему бы не выбросить исключение из уровня доступа к данным, перехватить его в вызывающем контроллере и обновить там состояние модели?Это кажется мне более чистым разделением проблем.

0 голосов
/ 19 октября 2011

То есть я могу получить модем от httpcontext.current или еще чего-нибудь?

Хотя вы можете использовать что-то вроде System.Web.HttpContext, я настоятельно рекомендую рекомендовать против него . Использование значения среды, подобного этому, сделает ваш код невозможным для тестирования с помощью модульного тестирования.

Лучше всего либо передать значение контекста классу, либо вернуть что-то, чтобы соответствующий уровень получил доступ к HTTP-контексту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...