Which of the following statements is true regarding ViewBag and ViewData?
4 phương ánCó giải thích
// Controller
ViewData["Number"] = 123; // ViewData requires casting in the view.
ViewBag.Text = "Hello"; // ViewBag does not require casting.
//View
<p>Number: @((int)ViewData["Number"])</p>
<p>Text: @ViewBag.Text</p>Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "Both ViewBag and ViewData are dynamically typed.". Cả ViewBag lẫn ViewData đều KHÔNG phải kiểu mạnh. ViewData là ViewDataDictionary, tức từ điển chuỗi - object, nên khi lấy ra phải ép kiểu như @((int)ViewData["Number"]) và lỗi ép kiểu chỉ lộ ra lúc chạy. ViewBag chỉ là lớp bọc dynamic quanh chính ViewData, nhờ dynamic mà viết @ViewBag.Text không cần ép kiểu nhưng cũng không được trình biên dịch kiểm tra. Vì vậy A, B và C đều sai khi gán nhãn "strongly typed" cho một trong hai. Muốn kiểu mạnh thì phải dùng view model với chỉ thị @model.
Cùng chương 4
With AddTransient<EmailService, EmailService>(), injecting into a controller twice will produce:Có lời giảiCâu hỏiConsider this C# code: public IActionResult Save(Person person) { if (ModelState.IsValid) return Content("Valid"); return Content("Error"); } If no value for Age is passed and Age is int, what happens?Có lời giảiCâu hỏiConsider this C# code: public class Person { public int Age { get; set; } } public IActionResult Save(Person person) { if (!ModelState.IsValid) { return Content("Invalid!"); } return Content("OK"); } Input: Age = "abc"? What is the output?Có lời giảiCâu hỏiCả 20 câu của chủ đề20 câu