Как я могу провести рефакторинг этой проверки? - PullRequest
0 голосов
/ 10 августа 2009

У меня есть класс проверки, который реализует IDataErrorInfo, который имеет все методы, которые вы должны реализовать.

Один из них

 public string this[string columnName]
        {
            get 
            {
            }
        }
       return "";

Теперь в этом операторе switch у меня есть некоторая проверка для моей формы.

Теперь я заметил, что многие мои формы нуждаются в одинаковых проверочных материалах.

Так что теперь, когда мне нужно добавить дополнительную проверку, я создаю новый класс, который реализует «IDataErrorInfo», добавив дополнительную проверку.

Тогда в представлении я делаю что-то вроде этого

CoreValidation coreReg = new CoreValidation();
 try
            {
                UpdateModel(coreReg, regForm.ToValueProvider());

            }
            catch
            {

                return View();
            }

            MoreValidation moreReg = new MoreValidation();

            try
            {
                UpdateModel(moreReg , regForm.ToValueProvider());

            }
            catch
            {

                return View();
            }

Мне просто не нравится этот факт, мне нужно иметь 2 отдельных оператора try catch, которые могут продолжать расти. Если мне нужно сказать, возьмите «core» и «More» и добавьте еще несколько проверок, которые не могут войти ни в одну из них, я смотрю на другую попытку catch.

Я попытался перейти к классу «CoreValidation», извлечь оператор switch и Properties и поместить его в новый класс.

Тогда я планировал просто вызвать этот класс и метод с помощью оператора swtich. Таким образом, в классе проверки «Больше» я бы в этом

public string this[string columnName]
        {
            get 
            {
               CoreValidtion(columnName); // this would contain the switch statement

              //add another switch here with extra validation.
            }
        }
       return "";

Тогда у меня будет только одна попытка catch, и я не буду дублировать какой-либо код, поскольку все вызовут один и тот же метод (CoreValidation).

Но updateModel не может понять это. Когда UpdateModel пытается установить все, что ему нужно, он не может найти методы свойств, поэтому все свойства, такие как

"UserName" все равно NULL.

Так как же я могу делать то, что хочу?

Спасибо

1 Ответ

0 голосов
/ 10 августа 2009

Я бы посоветовал вам взглянуть на несколько примеров проекта mvc asp.net, особенно пример nerdinner и contactmangement, чтобы увидеть, как проверка выполняется в этих примерах. Эти примеры дадут вам очень четкое руководство по валидации.

У меня была запись в список этих примеров проектов здесь.

...