ASP.NET - MVC - ViewBag
ViewBag trong MVC ASP.NET
Là một DynamicViewData object, nó là một lớp bao bọc (wrap) ViewData để cho phép truy cập vào object một cách linh hoạt. ViewBag cũng cho phép chúng ta sử dụng dynamic properties (dùng dấu chấm thay vì ngoặc vuông như ViewData). Sử dụng ViewBag cũng tương tự như ViewData nhưng sẽ tiện lợi hơn vì nó không cần phải ép kiểu.
Ví dụ sau minh họa cách chuyển dữ liệu từ controller sang view bằng ViewBag.
namespace MVC_BasicTutorials.Controllers
{
public class StudentController : Controller
{
IList<Student> studentList = new List<Student>() {
new Student(){ StudentID=1, StudentName="Steve", Age = 21 },
new Student(){ StudentID=2, StudentName="Bill", Age = 25 },
new Student(){ StudentID=3, StudentName="Ram", Age = 20 },
new Student(){ StudentID=4, StudentName="Ron", Age = 31 },
new Student(){ StudentID=5, StudentName="Rob", Age = 19 }
};
// GET: Student
public ActionResult Index()
{
ViewBag.TotalStudents = studentList.Count();
return View();
}
}
}
Trong ví dụ trên, chúng tôi muốn hiển thị tổng số sinh viên trong view. Vì vậy, đã gán số lượng sinh viên bằng ViewBag.TotalStudents = studentList.Count().
Bây giờ, trong view Index.cshtml, bạn có thể truy cập thuộc tính ViewBag.TotalStudents và hiển thị tổng số sinh viên như được hiển thị bên dưới.
<label>Total Students:</label> @ViewBag.TotalStudents
Kết quả:
Total Students: 5
ViewBag không yêu cầu ép kiểu trong khi lấy các giá trị.
ViewBag là một lớpbao bọc xung quanh ViewData. Nó sẽ đưa ra một ngoại lệ thời gian chạy, nếu tên thuộc tính ViewBag khớp với khóa của ViewData.