Tag: Validation

  • What is Data Annotations Extensions?

    What is Data Annotations Extensions?

    Data Annotations Extensions MVC C# Visual Studio

    Data Annotations extensions are for model validation, both on client and server-side.

    Well, these are great if you’re looking for something simple and fast. Don’t use them if you’re working on a project with many fields and dependencies. If you’re doing complex validation, I would highly recommend writing custom validation. If you’re familiar with NuGet, please search for it using Visual Studio Nuget package manager. Then install it inside your solution using Visual Studio. I wasn’t going to show any complex examples because the author has the examples on the website.

     

    Data Annotations Extensions

    • CreditCardAttribute
    • CuitAttribute
    • DateAttribute
    • DigitsAttribute
    • EmailAttribute
    • EqualToAttribute
    • FileExtensionsAttribute
    • IntegerAttribute
    • MaxAttribute
    • MinAttribute
    • NumericAttribute
    • UrlAttribute
    • YearAttribute

    Here is how you would use a data annotation extension attribute on your model.

    [Email]
    public string UserEmail {get; set;}

    After your model is hooked up to an attribute, you can then use your controller and views as normal. Just make sure you include your jQuery Validate library on your views. Then enable unobtrusive validation on your web config inside your solution project folder. It might be already enabled if you’re using a built-in template to start your project. Once you fire up your website and browse to the page that has the
    “UserEmail” field, try typing in some sort of email. The new data annotation extensions on the field will try to validate the input. It works exactly the way it would with the default attributes. If the value passes validation then no error will be shown. Otherwise, if the value is wrong, then an error will be display and user will not be able to submit the form.

    That’s pretty much it, good luck on using data annotations extensions within your MVC projects using Visual Studio and C#.

    You might also want to read

  • How to use Data Annotations?

    How to use Data Annotations?

    Interesting snippet from C#, ASP.NET and MVC, that uses the ValidationAttribute

    Ever wanted to add validation to your MVC view, well look further for more details.

    The ValidationAttribute will help you validate your model and server-side properties. As a programmer, you will need to add certain rules or attributes to the properties, such as required, string length, range and change the display property name. The example has a special attribute that limits the amount of words the user can type into a field.

    You are required to inherit from ValidationAttribute, in order to use the error message and IsValid method of the attribute. Once you have those, you can set in the constructor, the message and max value. Then override the IsValid method and check the property for the amount of words. I used split and length methods to check against the max words.

    If all is fine, return success, otherwise give the user the error message you set in the constructor.

    The programmer will need a lot of flexibility in validating their model and view, this snippet can help you avoid writing a lot of extra client side code.

    A lot of the credit goes to Scott Allen course on Building Applications with ASP.NET MVC4.

    public class MaxWordsAttribute : ValidationAttribute
        {
            public MaxWordsAttribute(int maxWords)
                : base("{0} has too many words.")
            {
                _maxWords = maxWords;
            }
    
            protected override ValidationResult IsValid(
                object value, ValidationContext validationContext)
            {
                if (value != null)
                {
                    var valueAsString = value.ToString();
                    if (valueAsString.Split(' ').Length > _maxWords)
                    {
                        var errorMessage = FormatErrorMessage(validationContext.DisplayName);
                        return  new ValidationResult(errorMessage);
                    }
                }
                return ValidationResult.Success;
            }
    
            private readonly int _maxWords;
        }
    
        public class Reviews : IValidatableObject
        {
            [Range(1,10)]
            [Required]
            public int Rating { get; set; }
    
            [Required]
            [StringLength(1024)]
            public string Desc { get; set; }
    
            [Display(Name = "User Name")]
            [DisplayFormat(NullDisplayText = "anonymous")]
    
            [MaxWords(1)]
            public string UserName{ get; set; }
    
            public IEnumerable Validate(ValidationContext validationContext)
            {
                if (Rating < 2 && UserName.ToLower().StartsWith("cookies"))
                {
                    yield return new ValidationResult("Sorry, cookies, you can't do this");
                }
            }
        }