Files
ASP.NET/Sessions/Session02/Notes/02_Notes.md
T

165 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## **7. Model Validation**
ASP.NET Core MVC provides model validation, which helps ensure that data received from the user is valid.
### Example: Data Annotations
```c#
public class Product {
public int Id { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
[Range(0, 10000)]
public decimal Price { get; set; }
}
```
- **Required**: Ensures the property has a value.
- **StringLength**: Restricts the maximum length.
- **Range**: Limits the value to a specified range.
Validation errors are automatically displayed in views if you include `@Html.ValidationMessageFor` for each property or `@Html.ValidationSummary()` to show all errors.
### **Summary**
- **Models** represent data and business logic.
- **Properties** in models define data structure and encapsulate fields.
- **Controller-View Interaction**: Pass models to views using `View(model);`.
# Side Notes
catchall in routing
appsettings.json
query parameters
apply the teaching techniques
Razor View Engine
how to optimize the projects code
Talk about lists C#
how to return custom view
assign C# variable and use it
ViewBag.... is a dynamic
ViewBag.myName...
hot reload...
what actually is viweBag, viewData
Layouts..
_ViewStart
_Shared
_MyLayout cshtml
RenderBody
RenderSection (required... )
_ViewImports
HtmlHelper / TagHelper
partial view
How to pass data to partial views
Models and Model Types
1. Binding Models
2. Application Models
3. View Models
https://learn.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-8.0
---
## **5. View Models vs. Domain Models**
In some cases, the data needed by a view might be a combination of several models or require custom formatting. A **View Model** is a class specifically created to supply the view with only the necessary data.
### Creating a View Model
```c#
public class ProductViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string FormattedPrice => $"${Price:N2}";
}
```
Using a view model keeps the domain model (`Product`) separate, especially useful when the view requires additional fields or formatting.
### Using the View Model in the Controller and View
In the controller:
```c#
public IActionResult Details()
{
var product = new Product { Id = 1, Name = "Laptop", Price = 1500.00m };
var productViewModel = new ProductViewModel
{
Id = product.Id,
Name = product.Name,
Price = product.Price
};
return View(productViewModel); }
```
In the view:
```c#
@model ProductViewModel <h2>Product Details</h2> <p>Product Name: @Model.Name</p> <p>Price: @Model.FormattedPrice</p>
```
View models allow you to tailor data specifically for the view, improving separation of concerns and maintainability.
---
## **6. Model Binding in ASP.NET Core MVC**
Model binding is a feature in ASP.NET Core that automatically maps HTTP request data to action parameters, making it easier to pass user inputs to models.
- **From URL or Query String**: If the action expects a model parameter and the URL includes a query string, model binding will automatically populate the models properties.
```c#
public IActionResult UpdatePrice(int id, decimal price) { // id and price are bound from the query string or route data }
```
- **From Form Data**: For form submissions, model binding maps form inputs to model properties by matching the names.
---
What is Business Logic