Tập lệnh trong cshtml

Bắt đầu từ bài viết này, chúng ta sẽ tìm hiểu về cách lập trình ASP. NET MVC, lập trình ứng dụng web với mô hình hiện đại, hoạt động của dự án được chia thành các tầng - Layer để dễ dàng bảo trì - mở rộng. Bài học đầu tiên về ASP. NET MVC bao gồm các mục

Tạo ứng dụng ASP. NET MVC đầu tiên

MVC đó là một mô hình lập trình, có sự cố gắng chia mã thành 3 phần.

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
4 triển khai các mô hình dữ liệu, truy cập dữ liệu.
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
5 biểu diễn dữ liệu cho người dùng,
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
6 nhận yêu cầu trình duyệt gửi đến và trả về phản hồi http

Trong NET Core 3. x tạo mẫu ứng dụng ASP. NET MVC fast from template by command

dotnet new mvc

Vui lòng tạo một thư mục mẫu đặt tên là

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
7, vào thư mục đó, rồi nhập lệnh để tạo dự án thực thi

Tập lệnh trong cshtml

Dự án tạo mẫu là cấu trúc cơ bản cho ứng dụng ASP. NET CORE MVC. Trong tổ chức các thư mục dự án đã thấy

  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    8. nơi chứa các lớp sẽ nhận yêu cầu gửi đến và trả về nội dung Phản hồi HTTP
  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    9. nơi chứa các lớp cung cấp, xử lý dữ liệu
  • app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    
        endpoints.MapControllerRoute(
            name: "myroute",
            defaults: new {controller="Home", action = "Index"},
            pattern: "{title}-{id}.html");
    });
    
    0. chứa các tập tin. cshtml to build HTML
  • app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    
        endpoints.MapControllerRoute(
            name: "myroute",
            defaults: new {controller="Home", action = "Index"},
            pattern: "{title}-{id}.html");
    });
    
    1. Chứa các tệp tĩnh (hình ảnh, js, css. ). Trong thư mục này đã sao chép thư viện CSS Bootstrap và JS JQuery sẵn có

Kết quả chạy trang web như hình sau

Tập lệnh trong cshtml

Tập lệnh trong cshtml

Một số khái niệm chung

  • app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    
        endpoints.MapControllerRoute(
            name: "myroute",
            defaults: new {controller="Home", action = "Index"},
            pattern: "{title}-{id}.html");
    });
    
    2. Một lớp C# do bạn định nghĩa kế thừa từ lớp Microsoft. AspNetCore. mvc. Bộ điều khiển, khi các truy vấn đến ứng dụng tùy thuộc vào cấu hình, căn cứ vào URL truy cập mà bộ điều khiển được khởi động và thiết lập vào nó (trong các thuộc tính) tất cả thông tin của một yêu cầu và một phương thức trong bộ điều khiển
  • app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    
        endpoints.MapControllerRoute(
            name: "myroute",
            defaults: new {controller="Home", action = "Index"},
            pattern: "{title}-{id}.html");
    });
    
    3. Các hành động là các phương thức công khai (không tĩnh, không quá tải) trong bộ điều khiển được gọi là tùy chọn tự động tùy thuộc vào điều hướng của tuyến đường trong ứng dụng (căn cứ vào URL)
    Action trả về các kiểu khai thác từ IActionResult như ViewResult, EmptyResult, FileContentResult, RedirectResult, JsonResult. that is respone will return for browser

    Tương ứng trong bộ điều khiển có sẵn các phương thức để trả về kiểu tương ứng trên như. Xem, Chuyển hướng, RedirectToAction, Nội dung, Tệp. , some Action could return to do not type khai báo từ IActionResult, thì nó tự động tạo ContentResult

    Các yêu cầu (truy vấn) được ánh xạ vào hành động thông qua định tuyến. Các Action thường được trả về bằng cách gọi phương thức View(), View(model)

  • app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    
        endpoints.MapControllerRoute(
            name: "myroute",
            defaults: new {controller="Home", action = "Index"},
            pattern: "{title}-{id}.html");
    });
    
    4. Là các tập tin
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    
        endpoints.MapControllerRoute(
            name: "myroute",
            defaults: new {controller="Home", action = "Index"},
            pattern: "{title}-{id}.html");
    });
    
    5 tích hợp sẵn cú pháp Razor (razor engine), (vui lòng xem về Razor Page để biết cú pháp khi xem. cshtml) được tổ chức thành các thư mục cho từng Bộ điều khiển. Nếu tên bộ điều khiển là Trang chủ thì các chế độ xem được đặt trong mục /Chế độ xem/Trang chủ, tên các chế độ xem tệp tương ứng với tên Hành động của Bộ điều khiển, qua đó nó được sử dụng để xây dựng HTML

Truy cập ứng dụng với HTTPS

Mở tệp

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
6 ra, thấy mã sinh ra được đưa vào đường dẫn một Middleware là HttpsRedirection với lệnh ứng dụng. UseHttpsRedirection();. Điều này có nghĩa là ứng dụng được tạo ra mặc định chỉ được truy cập bởi
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
7, sau đó trên môi trường sản phẩm bạn cần cấu hình Web Server như Apache, Nginx, IIS để xác thực ssl. Tuy nhiên, trong môi trường phát triển bạn cần xác thực SSL - nếu không thì có lỗi truy cập. Công cụ hỗ trợ dotnet làm điều này, bạn thực hiện lệnh sau

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
5

Sau đó bạn đã có thể truy cập được đến

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
8

Route - Định tuyển trong ASP. NET MVC

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
9 (tuyển dụng) is too too process process information through it application verify is required to process of any phương thức cho mỗi URL gửi đến. ASP. NET Core sử dụng một phần mềm trung gian để ánh xạ các URL tương ứng với bất kỳ phương thức nào của ứng dụng. Cụ thể hơn, Định tuyến được xác định là phương thức (hành động) trong Bộ điều khiển - qua đó nó chuyển các thông tin Yêu cầu đến và thi hành

Để tuyển dụng, đã trình bày trong phần trước ví dụ như Sử dụng EndpointMiddleware để tạo các điểm cuối nhánh trong đường ống trong UseEndpoints với các phương thức như

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
80,
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
81,
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
82

Đồng thời cũng đã nói về rẽ nhánh bằng cách sử dụng IApplicationBuilder. Bản đồ

Trong phần này, khi mở rộng dự án áp dụng MVC sử dụng thêm các phương thức tạo điểm cuối rẽ nhánh khi sử dụng với EndpointMiddleware, đầu tiên là

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
83

IEndpointRouteBuilder. MapControllerRoute

Cú pháp cơ bản đó là

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
2

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
84 tên của tuyến đường.
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
85 URL mẫu.
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
86 default value for route.
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
87 là các ràng buộc

Ví dụ

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...

Đoạn mã trên đã tạo ra một URL ánh xạ xạ tuyến vào Bộ điều khiển, mẫu này được xác định rõ trong

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
85 đó là URL có cấu trúc
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
89 nghĩa là URL phù hợp với mẫu có ba phần
dotnet new mvc
00 tương ứng với tên Bộ điều khiển (tên lớp trong thư mục

Như vậy nếu truy cập địa chỉ

dotnet new mvc
02 thì có nghĩa là sẽ tham chiếu đến lớp
dotnet new mvc
03, gọi đến hành động (phương thức)
dotnet new mvc
04 của nó

Tất nhiên, sẽ bổ sung thêm nhiều URL ánh xạ điểm cuối, khi truy vấn đến nó để so sánh từ trên xuống, gặp cái nào phù hợp sẽ chuyển bộ điều khiển hành động/hành động tương ứng này. Ví dụ

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});

Ở Route tên

dotnet new mvc
05 phù hợp khi truy cập URL định dạng
dotnet new mvc
06, ROUTE this not only Controller, Action in pattern which only ra in defaults as on. Các Url phù hợp đều dẫn đến thi hành
dotnet new mvc
07

Create a force in Route - URL

Với mỗi biến trong Route (như bộ điều khiển, hành động, id, tiêu đề. ) có thể hủy chế phải phù hợp với điều kiện nào đó, thông thường những điều kiện đó là biểu thức chính quy (RegEx - xem biểu thức chính quy). Ví dụ như Route có tên

dotnet new mvc
05 sau đây

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
8

Bạn có thể viết các ràng buộc nhanh chóng trực tiếp trong mẫu (xem thêm ở EndpointMiddleware đọc kỹ phần ràng buộc), các ràng buộc cũng nhanh chóng tham khảo tại route-constraint-reference ), ví dụ

dotnet new mvc
0

Tạo Controller trong ASP. NET MVC

Bộ điều khiển có chức năng nhận Yêu cầu gửi đến và trả về Phản hồi. ASP. NET MVC thì các Bộ điều khiển được lưu trong thư mục

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
8, đồng thời các bộ điều khiển lớp đặt tên có hậu tố là Bộ điều khiển, ví dụ như
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
30, như trong ứng dụng đã tạo ra có sẵn lớp
dotnet new mvc
03

Thông thường các bộ điều khiển kế thừa từ lớp

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
2, sau đó khai báo các phương thức có thể được gọi khi Route ánh xạ đến gọi là Action

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
3

Các hành động

Bộ điều khiển có các phương thức gọi là Hành động, như trên hành động

dotnet new mvc
04 nó trả về
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
34, thực tế nó có thể trả về bất kỳ loại dữ liệu nào. Ví dụ

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
9

Truy cập địa chỉ

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
35 thấy dòng văn bản trên

Trong Bộ điều khiển có sẵn các phương thức trả về các kiểu khai thác từ IActionResult như

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
1

Action return ContentResult

Lớp ContentResult là phần mở rộng của ActionResult, nó cho phép bạn tạo ra nội dung tài liệu trả về trong Action. Để tạo đối tượng ContentResult, cần khởi động nó với ba tham số bao gồm. nội dung tài liệu, kiểu tài liệu và mã hóa tài liệu

Ví dụ, trả về một nội dung văn bản

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
50

Action return JsonResult

Phương thức

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
36 của Bộ điều khiển trích xuất các thuộc tính của đối tượng và chuyển thành Json, Response trả về có tiêu đề Content-Type
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
37

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
51

Truy cập địa chỉ

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
38 kết quả

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
52

Chuyển hướng truy cập

Có một số phương thức để chuyển hướng, thường có tiền tố chuyển hướng, ví dụ như một số phương thức như

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
53

Trả về file nội dung

Phương thức File, tùy ngữ cảnh nó trả về file nội dung

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
54

Trả về 404 - NotFound

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
55

Sử dụng tham số cho Action

Có thể khai báo các Action có tham số, các tham số này được truyền thiết lập qua biến trong Route hoặc trong Url Query

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
56

Truy cập

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
39 trả về nội dung 110

Trong Layer Controller còn có các thuộc tính truy cập nhiều loại thông tin rất đa dạng, các thuộc tính này sẽ tìm hiểu dần dần ở các phần sau như

  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    90 - thuộc tính này giúp lấy được
    /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    91 của ứng dụng
  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    92
  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    93
  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    94 - Route dữ liệu
  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    95 và
    /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    96 - help convert data to View
  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    97 - giúp chia sẻ dữ liệu giữa các phiên bản
  • /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    98

Tạo View trong ASP. NET MVC - Công cụ xem dao cạo

Xem kết hợp với dữ liệu mà nó nhận được, phát nội dung HTML trả về cho khách hàng. Các View (tệp. cshtml) được bố trí trong thư mục

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
0, nó là các template - là các file có phần mở rộng
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
5, trong đó nó chứa mã HTML, đồng thời nhúng mã C# (server side script), những đoạn nhúng mã server side thì bắt

View is the files. cshtml sử dụng cú pháp Razor, thực tế trong ứng dụng mô hình MVC có áp dụng khôi phục tất cả các trang Razor Page đã hoàn chỉnh, bạn nên biết rõ về Razor Page đã trình bày ở phần trước, ví dụ như Cú pháp Razor, Bố cục

Nhiệm vụ của View là xuất HTML, trong NET Core có thành phần được gọi là Razor View Engine (từ đây gọi là Razor), nó có nhiệm vụ đọc các tệp View, thi hành các mã nhúng rồi xuất ra HTML

Khi một hành động trả về đối tượng

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
12 (phương thức Chế độ xem của bộ điều khiển tạo ra loại đối tượng này). Thì nó sẽ sử dụng View
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
5 và Razor working để tạo nội dung HTML. Nó sẽ tìm đến thư mục
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
0, tìm đến thư mục cùng tên Trình điều khiển ví dụ
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
15, sau đó là tệp
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
5 cùng tên với Action - tệp
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
5 được tìm thấy sẽ sinh ra HTML

If so

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
57

Hành động trên sẽ sử dụng Xem tương ứng là

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
18, hãy biên tập tệp nội dung thành

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
58
Tập lệnh trong cshtml

Để chèn một dòng mã phía máy chủ, thì hãy sử dụng

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
11 sau đó là dòng mã, Razor tự nhận biết đoạn mã kết thúc khi phát thẻ HTML, như ví dụ trên

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
59

Để mở khối, hãy sử dụng thêm

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
500

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
20

Thêm thư mục lưu trữ View. cshtml

Các View cho các Action mặc định được lưu theo cấu trúc thư mục

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
501, nếu muốn thay đổi hoặc bổ sung cấu trúc mới thì hãy thiết lập cho RazorEngine khi khởi động. ConfigureService, ví dụ

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
21

Truyền dữ liệu Controller tới View with ViewBag

Để truyền dữ liệu trong MVC, bạn có thể sử dụng

  • Thiết lập Model cho View, when call method View of Controller. Trọng Xem. cshtml sử dụng chỉ thị
    /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    502 để thiết lập kiểu truyền tới Model của View
  • Use property
    /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    96 of View and Controller
  • Use
    /...
        app.UseRouting();
    
        // Tạo các Endpoint
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    /...
    
    95 of View and Controller
  • Sử dụng TemData truyền dữ liệu giữa các trang (dùng cookie)

Để truyền dữ liệu từ Bộ điều khiển sang Chế độ xem, trong Bộ điều khiển có thể sử dụng thuộc tính

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
95, đây là kiểu Động, có thể thiết lập dữ liệu vào nó với cặp khóa/giá trị

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
22

Khi bộ điều khiển thiết lập dữ liệu thông qua ViewBag, thì ở chế độ xem truy cập thuộc tính này của bộ điều khiển với ký hiệu

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
11, đó là

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
23
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
24
Tập lệnh trong cshtml

Truyền dữ liệu Controller tới View with Model

Trong Razor có một thuộc tính có tên

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
507 thuộc tính này là một kiểu gereric (trong cú pháp ký hiệu nó là TModel, xem thêm Generic trong C# , TModel thực tế là kiểu gì đã được quyết định khi khởi động ViewResult)

Từ Controller, khi khởi tạo ViewResult với phương thức

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "myroute",
        defaults: new {controller="Home", action = "Index"},
        pattern: "{title}-{id}.html");
});
4, bạn có thể chỉ ra tham số chính là Model, ví dụ

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
25

This time, in. phtml, Razor sẽ được đọc thông qua thuộc tính với tên Model - Ví dụ

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
26

Lúc này ở View, Razor có thể truy cập được nó thông qua thuộc tính

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
507, nhưng ở phần đầu cần khai báo kiểu Model này với
/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
510

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
27

@model is a only market of Razor, it for known style of Model, cú pháp khai báo is @model Kiểu_Của_Model

Tập lệnh trong cshtml

Phát sinh bộ điều khiển, chế độ xem, trang dao cạo, khu vực

aspnet-codegenerator là công cụ bổ sung vào lệnh

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
511, nó giúp phát nhanh các cấu trúc thư mục chuẩn, tạo bộ điều khiển, chế độ xem, trang dao cạo nhanh hơn, tránh các thao tác đơn giả bạn phải làm thủ công

An ninh cài đặt công cụ lệnh dotnet aspnet-codegenerator

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
28

Thêm gói

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
29

Gõ lệnh để xem hướng dẫn

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
0

Create a Area

Area is area (thư mục) gom các Controller, Razor page thành một nhóm (xem Area)

Để tạo cấu trúc thư mục cấu trúc cho một Khu vực mà bạn nhập lệnh

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
1

Nó sẽ tạo thư mục

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
512 và trong đó là các thư mục con theo tiêu chuẩn như. Bộ điều khiển, Chế độ xem, Mô hình

Create ra Controller

Create a controller name First code source save at directory Controllers

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
2

Nó sẽ tạo ra lớp FirstController trong thư mục Controllers

Create View

Create out View set name Index, template is Empty, results save at Views/First use layout is _Layout

/...
    app.UseRouting();

    // Tạo các Endpoint
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    });
/...
3

Các lệnh trên nó còn phát sinh công việc với các Model, tạo các trang CRUD - tuy nhiên cần phải phân tích dự án với DbContext, sẽ nói ở các phần khác nhau