Search code examples
jqueryasp.net-mvc-3jquery-validaterequiredfieldvalidatorclient-side-validation

Require validation only if the field is visible


I am using the [Required] attribute for the client-side validation in ASP.NET MVC 3.

The class looks as:

public class User
{
    [Required(ErrorMessage = "First Name is required")]
    public string FirstName { get; set; }
}

I want the field FirstName to be validated only if it's visible, which will be shown only on certain conditions. How can I do that?

I have used the following, but still it looks to validate for the required field of that hidden field.

$('#registerForm').validate({ ignore: ":not(:visible)" });

Solution

  • With some useful hints from @Josiah, i am able to get to my requirement.

    Add the RequiredIfAttribute class and the required javascript. Refer Conditional Validation in ASP.NET MVC 3

    And in the class add the RequiredIf attribute as:

    public class User
    {
    [RequiredIf("hFirstName", "true", ErrorMessage = "First Name is required")]
    public string FirstName { get; set; }
    

    and in aspx:

    @Html.TextBoxFor(model => Model.FirstName, new { @style = "height:auto;" })
    @Html.ValidationMessageFor(model => Model.FirstName)
    @Html.Hidden("hFirstName")
    

    Set the value of hFirstName to 'true' if the FirstName field is hidden and 'false', if visible.

    The magic works with these changes. Thanks to @Josiah Ruddell for his answer