Advertisement

Advertisement

How to manage validation rules on a separate page or organize them distinctly in .net core mvc or mvc framework

How to Manage Master Validation in .net core mvc


ASP.NET Core MVC applications typically handle model validation by associating validation attributes with the model's properties. However, if you want to manage validation rules on a separate page or organize them distinctly, here's a structured way to achieve this:

1. Create the Model

Define the model without validation attributes.

public class UserModel

{

    public string Name { get; set; }

    public string Email { get; set; }

    public int Age { get; set; }

}


2. Create a Separate Validation Class

Create a separate class to define validation rules for the model.

using System.ComponentModel.DataAnnotations;


public class UserValidation

{

    [Required(ErrorMessage = "Name is required.")]

    [MaxLength(50, ErrorMessage = "Name cannot exceed 50 characters.")]

    public string Name { get; set; }


    [Required(ErrorMessage = "Email is required.")]

    [EmailAddress(ErrorMessage = "Invalid email format.")]

    public string Email { get; set; }


    [Range(18, 60, ErrorMessage = "Age must be between 18 and 60.")]

    public int Age { get; set; }

}


3. Link Model to Validation Class

Use metadata to associate the validation class with the model.

  • Install the Microsoft.AspNetCore.Mvc.ViewFeatures package if not already installed.

  • Create a MetadataType attribute in a partial class to link the validation rules.

using System.ComponentModel.DataAnnotations;


[MetadataType(typeof(UserValidation))]

public partial class UserModel

{

    // This class remains empty; it acts as a link to the validation rules

}


4. Update the Controller

Use the UserModel in your controller and let the validation attributes from UserValidation take effect.

public class UserController : Controller

{

    [HttpGet]

    public IActionResult Create()

    {

        return View(new UserModel());

    }


    [HttpPost]

    public IActionResult Create(UserModel model)

    {

        if (ModelState.IsValid)

        {

            // Process valid data

            return RedirectToAction("Success");

        }


        // Return view with validation errors

        return View(model);

    }

}


5. Create the View

Use Razor syntax to display the form and validation messages.


@model UserModel


<form asp-action="Create" method="post">

    <div>

        <label for="Name">Name</label>

        <input asp-for="Name" />

        <span asp-validation-for="Name" class="text-danger"></span>

    </div>

    <div>

        <label for="Email">Email</label>

        <input asp-for="Email" />

        <span asp-validation-for="Email" class="text-danger"></span>

    </div>

    <div>

        <label for="Age">Age</label>

        <input asp-for="Age" />

        <span asp-validation-for="Age" class="text-danger"></span>

    </div>

    <button type="submit">Submit</button>

</form>


6. Enable Client-Side Validation

Ensure validation scripts are included in your layout file.


@section Scripts {

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.13/jquery.validate.unobtrusive.min.js"></script>

}


Now, your model (UserModel) is validated using the rules defined in a separate class (UserValidation), keeping your code modular and clean.


How to manage validation rules on a separate page or organize them distinctly in .net core mvc or mvc framework How to manage validation rules on a separate page or organize them distinctly in .net core mvc or mvc framework Reviewed by Rikesh on January 02, 2025 Rating: 5

No comments:

Powered by Blogger.