Model Binding & Validation Basics in ASP.NET Core
๐ก Concept Name
Model Binding & Validation Basics
๐ Quick Intro
Model binding maps incoming HTTP data (query string, form, route) to parameters or C# objects automatically. Validation ensures that the bound data meets expected rules. Together, they simplify data handling in web applications.
๐ง Analogy / Short Story
Think of model binding like a receptionist filling a form using your spoken input (name, age, email). Validation is like the receptionist checking if your age is a number and your email is valid before submitting it to the manager.
๐ง Technical Explanation
Model binding in ASP.NET Core maps request data to method parameters or model objects. It works for query strings, form data, headers, and route values. Validation is automatically performed using data annotations like [Required]
, [EmailAddress]
, etc. Errors are stored in ModelState
which can be checked before processing.
๐ฏ Purpose & Use Case
- โ Automatically convert form/query/route data into model objects
- โ Validate input using simple C# attributes
- โ Prevent invalid or malicious data entry
- โ Simplify request processing logic
- โ Improve security and maintainability
๐ป Real Code Example
Model:
public class ContactModel
{
[Required]
public string Name { get; set; }
[EmailAddress]
public string Email { get; set; }
[Range(18, 99)]
public int Age { get; set; }
}
Controller Action:
[HttpPost]
public IActionResult Submit(ContactModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
return Ok("Data is valid!");
}

โ Interview Q&A
Q1: What is model binding?
A: It's a feature that maps incoming request data to C# objects automatically.
Q2: What sources are used for model binding?
A: Form, query string, route, headers, and body.
Q3: What is ModelState?
A: It stores the state and any validation errors of the bound model.
Q4: What does [Required] do?
A: Ensures that a property must be supplied or else triggers a validation error.
Q5: What happens if validation fails?
A: ModelState will be invalid, and you can return errors or re-render the form.
Q6: Can you bind complex nested objects?
A: Yes, model binding supports complex types and collections.
Q7: How do you handle custom validation?
A: You can create custom attributes by inheriting from ValidationAttribute.
Q8: Is server-side validation enough?
A: No, combine with client-side validation for best UX and security.
Q9: What namespace provides validation attributes?
A: System.ComponentModel.DataAnnotations.
Q10: How do you check if model is valid?
A: Use ModelState.IsValid
inside the controller action.
Q1: What is the role of [EmailAddress] attribute?
- A. Binds value to email field
- B. Validates the input to ensure it is a valid email
- C. Converts value to lowercase
- D. Makes the field optional
Q2: What does ModelState.IsValid return?
- A. true if all validations pass
- B. false if model is empty
- C. true always
- D. depends on controller settings
๐ก Bonus Insight
You can group validation messages into ValidationSummary
on Razor pages and also integrate client-side validation using jQuery unobtrusive validation for a seamless form experience.
๐ PDF Download
Need a handy summary for your notes? Download this topic as a PDF!