vault backup: 2024-11-16 22:33:29

This commit is contained in:
2024-11-16 22:33:30 +03:30
parent 309683a25a
commit e3da7b414c
678 changed files with 321303 additions and 0 deletions
+164
View File
@@ -0,0 +1,164 @@
## **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