Search code examples
c#asp.net-mvcasp.net-mvc-3data-annotations

Disable Required validation attribute under certain circumstances


I was wondering if it is possible to disable the Required validation attribute in certain controller actions. I am wondering this because on one of my edit forms I do not require the user to enter values for fields that they have already specified previously. However I then implement logic that when they enter a value it uses some special logic to update the model, such as hashing a value etc.

Any sugestions on how to get around this problem?

EDIT:
And yes client validation is a problem here to, as it will not allow them to submit the form without entering a value.


Solution

  • This problem can be easily solved by using view models. View models are classes that are specifically tailored to the needs of a given view. So for example in your case you could have the following view models:

    public UpdateViewView
    {
        [Required]
        public string Id { get; set; }
    
        ... some other properties
    }
    
    public class InsertViewModel
    {
        public string Id { get; set; }
    
        ... some other properties
    }
    

    which will be used in their corresponding controller actions:

    [HttpPost]
    public ActionResult Update(UpdateViewView model)
    {
        ...
    }
    
    [HttpPost]
    public ActionResult Insert(InsertViewModel model)
    {
        ...
    }