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 Show
Tạo ứng dụng ASP. NET MVC đầu tiênMVC đó 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 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
Kết quả chạy trang web như hình sau Một số khái niệm chung
Truy cập ứng dụng với HTTPSMở 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 MVCapp.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 mvc00 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 mvc02 thì có nghĩa là sẽ tham chiếu đến lớp dotnet new mvc03, gọi đến hành động (phương thức) dotnet new mvc04 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 mvc05 phù hợp khi truy cập URL định dạng dotnet new mvc06, 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 mvc07 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 mvc05 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 mvc0 Tạo Controller trong ASP. NET MVCBộ đ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 mvc03 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 mvc04 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ư
Tạo View trong ASP. NET MVC - Công cụ xem dao cạoXem 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 Để 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. cshtmlCá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
Để 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 Truyền dữ liệu Controller tới View with ModelTrong 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 Phát sinh bộ điều khiển, chế độ xem, trang dao cạo, khu vựcaspnet-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 AreaArea 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 ControllerCreate 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 ViewCreate 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 |