IsValid (значение объекта) не было реализовано этим классом - PullRequest
6 голосов
/ 30 января 2011

Я пытаюсь использовать беспрепятственный JavaScript asv.net MVC 3 с jquery.

Я слежу за этим Учебник

Мне неясно, как сделать первый шаг.

Я думал, что это просто переопределение IsValid, но я получаю сообщение об ошибке, поэтому, должно быть, я делаю что-то не так

 public class EmailAttribute : ValidationAttribute, IClientValidatable
        {

            public override bool IsValid(object value)
            {
                return base.IsValid(value);
            }

            public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
            {
                yield return new ModelClientValidationEmailRule(FormatErrorMessage(metadata.GetDisplayName()));
            }
        }

       public class ModelClientValidationEmailRule : ModelClientValidationRule
        {
            public ModelClientValidationEmailRule(string errorMessage)
            {
                base.ErrorMessage = errorMessage;
                base.ValidationType = "email";
            }
        }

Я получаю эту ошибку

IsValid(object value) has not been implemented by this class.  The preferred entry point is GetValidationResult() and classes should override IsValid(object value, ValidationContext context).
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NotImplementedException: IsValid(object value) has not been implemented by this class.  The preferred entry point is GetValidationResult() and classes should override IsValid(object value, ValidationContext context).

Source Error:

Line 13:         public override bool IsValid(object value)
Line 14:         {
Line 15:             return base.IsValid(value);
Line 16:         }
Line 17: 

1 Ответ

6 голосов
/ 30 января 2011

Метод IsValid должен содержать логику проверки.

Вы просто вызываете реализацию базового класса IsValid, которая, кажется, вызывает исключение NotImplementedException, поскольку ожидается, что оно будет переопределено в подклассе.

public override bool IsValid(object value)
{
    //return true if 'value' is a valid email. Otherwise return false.
}
...