Ngân hàng câu hỏi của chương

Câu hỏi: PRN222 - Chương 5: ASP.NET Core Razor Pages

23 câu trắc nghiệm kèm lời giải của môn Advanced Cross-Platform Application Programming With .NET - Lập trình ứng dụng đa nền tảng nâng cao với .NET, xếp theo thứ tự nhập vào ngân hàng.

Danh sách câu hỏi

20/23 câuCòn 3
1How do you inject a service into a Razor PageModel?4 lựa chọnDễ100% trả lời đúng
ABy directly creating an instance of the service.
BBy adding the service as a constructor parameter.
CBy using global variables.
DBy using static methods.
Lời giải

Để chèn một dịch vụ vào một Razor PageModel, bạn cần sử dụng một trong các phương pháp sau. Phương pháp chính xác là thêm dịch vụ vào tham số constructor. Điều này cho phép bạn sử dụng dịch vụ trong các phương thức của PageModel. Ví dụ, bạn có thể thêm dịch vụ vào constructor như sau:

Lời giải
public class MyPageModel : PageModel {
 private readonly MyService _myService;
 public MyPageModel(MyService myService)
 {
 _myService = myService;
 }
 public void OnGet()
 {
 _myService.DoSomething();
 }
 }

Sau đó, bạn cần thêm dịch vụ vào DI container trong Startup.cs.

Lời giải
services.AddTransient<MyService>();

Điều này cho phép bạn sử dụng dịch vụ trong PageModel.

Mở trang câu hỏi này →
2What is the file extension for Razor Page files?4 lựa chọnDễ80% trả lời đúng
A.cshtml
B.razor
C.aspx
D.html
Lời giải
Câu hỏi này yêu cầu bạn chọn file extension phù hợp cho các file Razor Page. Razor Page là một loại file trong ASP.NET Core, được sử dụng để tạo các trang web động. Câu trả lời đúng là .cshtml, vì nó là file extension tiêu chuẩn cho các file Razor Page. Các file .cshtml chứa mã C# và HTML, giúp tạo ra các trang web động phức tạp. Các file .razor cũng có thể được sử dụng, nhưng nó không phải là file extension mặc định. Các file .aspx và .html không phù hợp cho các file Razor Page.
Mở trang câu hỏi này →
3How is dependency injection typically used in Razor Pages?4 lựa chọnDễ100% trả lời đúng
ABy directly creating instances of dependencies.
BBy injecting dependencies into the PageModel constructor.
CBy using global variables.
DBy using static methods.
Lời giải
Tùy thuộc vào Razor Pages, Dependency Injection thường được sử dụng bằng cách chèn các phụ thuộc vào constructor của PageModel. Điều này cho phép bạn tách biệt logic kinh doanh khỏi logic trang web, giúp dễ dàng bảo trì và mở rộng ứng dụng. Khi bạn sử dụng Dependency Injection, bạn có thể dễ dàng thay thế các phụ thuộc bằng các phiên bản mới hoặc các phiên bản khác mà không cần thay đổi mã nguồn của trang web. Điều này giúp tăng cường tính linh hoạt và khả năng mở rộng của ứng dụng.
Mở trang câu hỏi này →
4ViewData in Razor Pages is:4 lựa chọnDễ100% trả lời đúng
AA list of HTML helpers
BA dictionary for passing data from PageModel to Razor Page
CA type of middleware
DA static variable shared by all pages
Lời giải
Trong Razor Pages, ViewData là một đối tượng được sử dụng để truyền dữ liệu từ PageModel sang Razor Page. Nó được định nghĩa là một dictionary, cho phép bạn lưu trữ và truy xuất dữ liệu một cách dễ dàng. Khi bạn muốn truyền dữ liệu từ PageModel sang Razor Page, bạn có thể sử dụng ViewData để lưu trữ dữ liệu và sau đó truy xuất nó trong Razor Page. Điều này giúp bạn có thể chia sẻ dữ liệu giữa các phần của ứng dụng một cách dễ dàng. Ví dụ, bạn có thể sử dụng ViewData để lưu trữ dữ liệu người dùng và sau đó sử dụng nó để hiển thị thông tin người dùng trên Razor Page.
Mở trang câu hỏi này →
5What is the purpose of the [BindProperty] attribute in Razor Pages?4 lựa chọnDễ100% trả lời đúng
ATo define a database connection.
BTo bind form data to a PageModel property.
CTo encrypt data.
DTo manage user sessions.
Lời giải
Trong Razor Pages, [BindProperty] là một thuộc tính quan trọng giúp liên kết dữ liệu từ form với các thuộc tính của PageModel. Khi bạn sử dụng [BindProperty] trên một thuộc tính của PageModel, bạn có thể tự động liên kết dữ liệu từ form với thuộc tính đó. Điều này giúp giảm thiểu mã code và tăng hiệu suất khi xử lý dữ liệu từ form. Ví dụ, nếu bạn có một form với trường nhập tên và địa chỉ, bạn có thể sử dụng [BindProperty] để liên kết dữ liệu từ form với các thuộc tính tên và địa chỉ của PageModel. Điều này giúp bạn dễ dàng truy cập và xử lý dữ liệu từ form trong code-behind của trang Razor Pages.
Mở trang câu hỏi này →
6Which principle is emphasized by DI in Razor Pages?4 lựa chọnTrung bình57% trả lời đúng
ADon't Repeat Yourself (DRY)
BMaximum Reuse
CProcedural Programming
DLoose Session Coupling
Lời giải
DI (Dependency Injection) trong Razor Pages nhấn mạnh nguyên tắc không lặp lại (Don't Repeat Yourself, DRY). Nguyên tắc này cho phép giảm thiểu sự lặp lại mã nguồn và tăng cường khả năng tái sử dụng. DI giúp bạn tách biệt các phụ thuộc và cung cấp chúng một cách linh hoạt, từ đó giảm thiểu sự lặp lại mã nguồn và tăng cường tính linh hoạt của ứng dụng. Điều này giúp bạn dễ dàng thay đổi hoặc cập nhật các phụ thuộc mà không ảnh hưởng đến các phần khác của ứng dụng.
Mở trang câu hỏi này →
7The PageModel in Razor Pages is best described as:4 lựa chọnDễ100% trả lời đúng
AA combination of Controller and ViewModel
BA replacement for HTML
CAn Entity Framework class
DA database entity
Lời giải
PageModel trong Razor Pages được mô tả tốt nhất là một sự kết hợp giữa Controller và ViewModel. Nó chứa các thuộc tính và phương thức để xử lý dữ liệu và giao diện người dùng. PageModel thừa hưởng từ PageModelBase và có thể được sử dụng để tạo ra các trang web động. Nó cho phép bạn tách biệt logic kinh doanh và giao diện người dùng, giúp dễ dàng bảo trì và mở rộng ứng dụng. PageModel cũng cung cấp các tính năng như validation, authorization và caching, giúp bạn có thể xây dựng các ứng dụng web mạnh mẽ và hiệu quả.
Mở trang câu hỏi này →
8What is the primary purpose of ASP.NET Core Razor Pages?4 lựa chọnDễ100% trả lời đúng
ABuilding desktop applications.
BBuilding page-centric web applications with simplified development.
CBuilding mobile applications.
DBuilding database management systems.
Lời giải
ASP.NET Core Razor Pages là một framework được sử dụng để xây dựng các ứng dụng web tập trung vào trang (page-centric) với quy trình phát triển được đơn giản hóa. Mục đích chính của nó là cung cấp một cách tiếp cận linh hoạt và dễ sử dụng để xây dựng các ứng dụng web, cho phép các nhà phát triển tập trung vào việc xây dựng các trang web và chức năng của chúng, thay vì phải lo lắng về các chi tiết kỹ thuật. Với Razor Pages, các nhà phát triển có thể tạo ra các ứng dụng web nhanh chóng và hiệu quả, đồng thời cũng có thể tận dụng được các tính năng và công nghệ tiên tiến của ASP.NET Core.
Mở trang câu hỏi này →
9What is the role of the _Layout.cshtml file in Razor Pages?4 lựa chọnDễ100% trả lời đúng
ATo define a database schema.
BTo provide a common layout for multiple Razor Pages.
CTo encrypt data.
DTo manage user sessions.
Lời giải
Trong Razor Pages, _Layout.cshtml là một file quan trọng giúp định nghĩa cấu trúc chung cho nhiều trang Razor Pages. Nó giống như một bản thiết kế chung cho các trang web, bao gồm các phần như header, footer, navigation menu, v.v. Mục đích chính của _Layout.cshtml là giúp tạo ra một giao diện thống nhất cho toàn bộ ứng dụng, từ đó dễ dàng quản lý và cập nhật các phần tử giao diện.
Mở trang câu hỏi này →
10Which of the following cannot be used for state management in Razor Pages?4 lựa chọnDễ71% trả lời đúng
ACookies
BSession
CTempData
DViewBag
Lời giải
Để quản lý trạng thái trong Razor Pages, chúng ta có thể sử dụng các phương thức sau: Cookies, Session, TempData. Tuy nhiên, ViewBag không phải là một phương thức hợp lệ để quản lý trạng thái. ViewBag là một đối tượng được sử dụng để truyền dữ liệu từ controller sang view, nhưng nó không được thiết kế để lưu trữ dữ liệu trạng thái. Nếu bạn cố gắng sử dụng ViewBag để lưu trữ dữ liệu trạng thái, nó sẽ không được lưu trữ sau khi bạn chuyển sang một trang khác. Vì vậy, trong các lựa chọn trên, chỉ có ViewBag là không thể sử dụng để quản lý trạng thái trong Razor Pages.
Mở trang câu hỏi này →
11How are handler methods typically named in a Razor PageModel?4 lựa chọnDễ100% trả lời đúng
AHandleGet(), HandlePost()
BOnGet(), OnPost()
CGetHandler(), PostHandler()
DProcessGet(), ProcessPost()
Lời giải
Trong Razor Pages, phương thức xử lý (handler method) thường được đặt tên theo quy tắc sau: phương thức xử lý cho hành động GET được đặt tên là OnGet(), phương thức xử lý cho hành động POST được đặt tên là OnPost(). Ví dụ, nếu bạn muốn tạo một trang Razor Pages để hiển thị dữ liệu khi người dùng truy cập trang đó bằng cách sử dụng GET, bạn sẽ tạo một phương thức OnGet() để xử lý yêu cầu này. Tương tự, nếu bạn muốn tạo một trang để xử lý dữ liệu khi người dùng gửi yêu cầu POST, bạn sẽ tạo một phương thức OnPost() để xử lý yêu cầu này. Quy tắc đặt tên này giúp cho việc viết mã và đọc mã trở nên dễ dàng hơn.
Mở trang câu hỏi này →
12What is the purpose of the @page directive at the top of a Razor Page?4 lựa chọnDễ100% trả lời đúng
ATo define a database connection.
BTo declare that the file is a Razor Page.
CTo encrypt data.
DTo manage user sessions.
Lời giải
Mục đích của chỉ thị @page ở đầu trang Razor Page là để xác định trang web đó là một trang Razor Page. Khi bạn tạo một trang Razor Page mới, bạn sẽ thấy một dòng mã ở đầu trang như sau: @page. Chỉ thị này cho biết trang đó được tạo dựa trên mô hình Razor Page và có thể chứa các yếu tố như layout, model, view, v.v. Nó giúp cho trình biên dịch biết cách xử lý trang đó và cung cấp các tính năng như layout động, model động, v.v. Ngoài ra, chỉ thị @page cũng giúp cho trình biên dịch xác định các trang Razor Page khác nhau và tránh nhầm lẫn giữa chúng.
Mở trang câu hỏi này →
13Consider this C# code:4 lựa chọncó codeTrung bình67% trả lời đúng
Đề bài
public IActionResult Next() {
  var msg = TempData["Message"];
  var again = TempData["Message"];
  return Content($"{msg} | {again}");
}

If TempData["Message"] = "Hi"; was set in the previous request, what is displayed?

AHi | Hi
BHi | null
Cnull | null
DError
Lời giải
Khi thực hiện yêu cầu trước đó, TempData['Message'] đã được gán giá trị 'Hi'. Trong phương thức Next(), chúng ta đang truy xuất giá trị này và gán nó vào biến msg và lại. Sau đó, chúng ta sử dụng Content() để trả về nội dung của phương thức. Nội dung này sẽ là kết hợp của msg và lại. Vì TempData['Message'] đã được gán giá trị 'Hi' trước đó, nên giá trị của msg và lại sẽ đều là 'Hi'. Do đó, nội dung trả về sẽ là 'Hi | Hi'.
Mở trang câu hỏi này →
14Which approach is NOT supported in Razor Pages state management?4 lựa chọnTrung bình57% trả lời đúng
ATempData
BApplication Variables
CHibernate
DCookies
Lời giải
Razor Pages cung cấp một số cách quản lý trạng thái, bao gồm TempData, Application Variables và Cookies. Tuy nhiên, Hibernate không phải là một trong những cách được hỗ trợ. Hibernate là một framework quản lý trạng thái trong các ứng dụng web, nhưng nó không được tích hợp trực tiếp vào Razor Pages. Thay vào đó, các nhà phát triển có thể sử dụng các cách quản lý trạng thái khác như TempData, Application Variables và Cookies để quản lý dữ liệu trong ứng dụng.
Mở trang câu hỏi này →
15Which statement is true about Model Binding in Razor Pages?4 lựa chọnDễ100% trả lời đúng
AOnly works with GET requests
BMaps HTTP request data to PageModel properties
CMust always use TempData
DCannot bind form values
Lời giải
Model Binding trong Razor Pages là một tính năng cho phép ánh xạ dữ liệu từ yêu cầu HTTP đến các thuộc tính của PageModel. Điều này cho phép bạn dễ dàng lấy dữ liệu từ yêu cầu HTTP và sử dụng nó trong trang Razor Pages của mình. Ví dụ, nếu bạn có một trang Razor Pages với một form và bạn muốn lấy dữ liệu từ form đó, bạn có thể sử dụng Model Binding để ánh xạ dữ liệu từ form đến các thuộc tính của PageModel. Điều này giúp giảm thiểu mã code và làm cho trang Razor Pages của bạn trở nên dễ dàng hơn để quản lý.
Mở trang câu hỏi này →
16Which statement is correct about Model Binding?4 lựa chọnDễ100% trả lời đúng
AIt only works with query strings
BIt maps HTTP request data to controller action parameters
CIt must always use TempData
DIt cannot bind complex types
Lời giải
Model Binding trong ASP.NET là một tính năng giúp ánh xạ dữ liệu từ yêu cầu HTTP đến các tham số của hành động controller. Điều này cho phép bạn dễ dàng lấy dữ liệu từ các nguồn khác nhau như query string, form data, JSON, v.v. và ánh xạ nó vào các tham số của hành động controller. Ví dụ, nếu bạn có một hành động controller với tham số tên 'name', Model Binding sẽ ánh xạ giá trị của 'name' từ query string hoặc form data vào tham số 'name' của hành động controller. Điều này giúp giảm thiểu số lượng mã cần thiết để ánh xạ dữ liệu và làm cho mã của bạn trở nên dễ đọc và dễ bảo trì hơn.
Mở trang câu hỏi này →
17In a Razor Page handler method, how do you check4 lựa chọncó codeDễ100% trả lời đúng
Đề bài
if the model is valid after form submission? public IActionResult OnPost() {
  if (???) {
    // process data
  }
  return Page();
}
AModel.Check()
BModelState.IsValid
CValidateModel()
DModel.IsValid()
Lời giải

Để kiểm tra xem mô hình (model) có hợp lệ sau khi submit form trong một phương thức xử lý Razor Page, bạn cần sử dụng phương thức ModelState.IsValid. Phương thức này sẽ kiểm tra xem tất cả các thuộc tính của mô hình có được nhập đúng hay không, và trả về giá trị boolean (true hoặc false) để chỉ ra mô hình có hợp lệ hay không. Nếu mô hình hợp lệ, bạn có thể thực hiện các hành động cần thiết. Ví dụ:

Lời giải
public IActionResult OnPost()
{
    if (ModelState.IsValid)
    {
        // Xử lý dữ liệu
    }
    return Page();
}
Mở trang câu hỏi này →
18Which directive defines the page model in a Razor Page?4 lựa chọnDễ83% trả lời đúng
A@page
B@model
C@pagemodel
D@controller
Lời giải
Trong Razor Pages, một trang web được tạo thành từ các phần tử nhỏ hơn được gọi là các trang. Mỗi trang được định nghĩa bởi một lớp riêng biệt. Để định nghĩa một trang, chúng ta sử dụng một số thuộc tính đặc biệt trong Razor. Trong đó, thuộc tính '@page' được sử dụng để định nghĩa mô hình trang. Nó cho phép chúng ta chỉ định tên của trang và các thuộc tính khác mà trang đó có thể sử dụng.
Mở trang câu hỏi này →
19By default, Razor Pages uses which folder as the root for routing?4 lựa chọnDễ100% trả lời đúng
A/Controllers
B/Views
C/Pages
D/Models
Lời giải
Razor Pages sử dụng thư mục nào làm gốc cho routing mặc định? Khi tạo một ứng dụng Razor Pages mới, .NET Core sẽ tạo ra một số thư mục và file cơ bản. Trong đó, thư mục quan trọng là /Pages. Thư mục này chứa các file Razor Pages, mỗi file tương ứng với một trang web. Khi bạn tạo một file Razor Pages mới, .NET Core sẽ tự động tạo ra một đường dẫn routing cho nó. Đường dẫn này được xác định bởi tên file và tên phương thức trong file đó. Ví dụ, nếu bạn tạo một file Index.cshtml trong thư mục Pages, đường dẫn routing mặc định sẽ là /Pages/Index. Điều này cho phép bạn truy cập trang web dễ dàng thông qua đường dẫn này.
Mở trang câu hỏi này →
20What is the purpose of the @model directive in a Razor Page?4 lựa chọnDễ100% trả lời đúng
ATo define a database connection.
BTo specify the PageModel type for the Razor Page.
CTo encrypt data.
DTo manage user sessions.
Lời giải
Mục đích của chỉ thị @model trong một trang Razor là để chỉ định loại PageModel cho trang Razor. Khi bạn tạo một trang Razor mới, bạn sẽ thấy một file có tên tương tự với tên trang Razor đó, nhưng có phần mở rộng là .cs. Đây là nơi bạn sẽ định nghĩa PageModel cho trang Razor. Chỉ thị @model được sử dụng để chỉ định loại PageModel mà trang Razor sẽ sử dụng. Ví dụ, nếu bạn muốn sử dụng PageModel có tên là MyPageModel, bạn sẽ sử dụng chỉ thị @model như sau: @model MyPageModel. Điều này cho phép bạn sử dụng các thuộc tính và phương thức của PageModel trong trang Razor.
Mở trang câu hỏi này →