Model Binding and Forms Post

Level : Intermediate
Mentor: Shailendra Chauhan
Duration : 00:03:00

Model Binding

Model binding in ASP.NET Core is a mechanism for automatically populating the properties of a model object with data from various sources such as query strings, route values, form data, and more. It simplifies the process of extracting data from HTTP requests and mapping them to strongly-typed models. Default Model Binding: ASP.NET Core provides default model binding, which automatically maps data from various sources to model properties based on naming conventions and data types. For example, if you have an action method parameter named "user" of type UserModel, ASP.NET Core will automatically bind and populate this object from the incoming request data.

Example

public IActionResult CreateUser(UserModel user)
{
  // ASP.NET Core automatically binds data to 'user' object
  // ...
}

Custom Model Binding

Custom model binding allows you to create your own logic for binding data to model objects. You can implement custom model binders to define how data should be mapped to models. This is useful when you need to handle data in a non-standard format or want to perform complex data transformations.

Example

[ModelBinder(BinderType = typeof(CustomModelBinder))]
public IActionResult CustomBinding(MyCustomModel model)
{
  // Use your custom model binder logic to bind data
  // ...
}

Custom Model Binder

Custom model binders allow you to define custom logic for binding data to model objects. You can create your own custom model binder by implementing the IModelBinder interface. This is especially useful when handling complex data-binding scenarios or data from non-standard sources.

Example

public class CustomModelBinder : IModelBinder
{
  public Task BindModelAsync(ModelBindingContext bindingContext)
  {
    // Implement your custom data binding logic here
    // ...
    return Task.CompletedTask;
  }
}
[ModelBinder(BinderType = typeof(CustomModelBinder))]
public IActionResult CustomBinding(MyCustomModel model)
{
  // Use your custom model binder logic to bind data
  // ...
}

Handling Form Post

Handling form posts involves receiving and processing data submitted through HTML forms in ASP.NET Core. You can use the [HttpPost] attribute on an action method to specify that it should handle POST requests.

Example

[HttpPost]
public IActionResult ProcessForm(FormModel form)
{
  // Handle form data submitted via POST request
  // ...
}

Model Binding Attributes

Model binding attributes are used to fine-tune the behavior of model binding. For example, you can use attributes like [BindRequired] to specify that a property must be bound, or [BindNever] to exclude a property from binding.

Example

public IActionResult ProcessForm([BindRequired] string name, [BindNever] string email)
{
  // 'name' must be bound; 'email' is excluded from binding
  // ...
}

Model Binding Sources

Model binding sources determine where the data for model binding comes from. ASP.NET Core supports various sources, including form values, route values, query string parameters, and posted files.

Example

public IActionResult ProcessData(
  [FromRoute] int id,
  [FromQuery] string searchTerm,
  [FromForm] FormData formData)
{
  // Use data from route, query, and form sources
  // ...
}

Form values (Request.Form, jQuery)

You can bind data from form values using the Request.Form collection or other client-side libraries like jQuery. ASP.NET Core automatically binds form data to model properties based on naming conventions.

Example

public IActionResult ProcessFormData([FromForm] FormData formData)
{
  // ASP.NET Core automatically binds form data to 'formData' object
  // ...
}

Route values (RouteData.Values)

Route values are typically extracted from the URL's route pattern and are used to bind data to model properties.

Example

public IActionResult ProcessRouteData([FromRoute] int id)
{
  // ASP.NET Core binds 'id' from route data
  // ...
}

Query string parameters (Request.QueryString)

Query string parameters are extracted from the URL's query string and can be bound to model properties.

Example

public IActionResult ProcessQueryString([FromQuery] string searchTerm)
{
  // ASP.NET Core binds 'searchTerm' from the query string
  // ...
}

Posted files (Request.Files)

To handle file uploads, you can bind posted files to model properties.

Example

public IActionResult UploadFile([FromForm] IFormFile file)
{
  // ASP.NET Core binds the uploaded file to 'file' object
  // ...
}
Self-paced Membership
  • 24+ Video Courses
  • 825+ Hands-On Labs
  • 400+ Quick Notes
  • 125+ Skill Tests
  • 10+ Interview Q&A Courses
  • 10+ Real-world Projects
  • Career Coaching Sessions
  • Email Support
Upto 60% OFF
Know More
Still have some questions? Let's discuss.
CONTACT US
Accept cookies & close this