CÁCH HIỂN THỊ TỪ CONTROLLER SANG VIEW •Tại @RenderBody(): tại đây dùng để hiển thị các bộ điều khiển của ta ra, có nghĩa là hiển thị nội dung mà bạn muốn, ví dụ bạn muốn fix header và footer cố định trang cho mỗi giao diện của website @RenderBody thì nó sẽ render cái nội dung của trang con ra ngoài trang layout dùng chung VD: @ViewBag.Title @RenderBody() •File ViewStart _ViewStart.cshtml: dùng để định nghĩa layout cho cả website, bạn có thể thiết lập tùy biến sài layout cũng được, giống như Admin thì sài layout này, còn user thì thì sai layout kia. _ViewStart.cshtml: dùng để định nghĩa layout cho cả website, bạn có thể thiết lập tùy biến sài layout cũng được, giống như Admin thì sài layout này, còn user thì thì sai layout kia. VD: @{ string CurrentName = Convert.ToString(HttpContext.Current.Request.RequestContext.RouteData.Values["Controller"]); string clayout = ""; switch (CurrentName) { case "Home": clayout = "~/Views/Shared/_LayoutHome.cshtml"; break; default: //Admin layout clayout = "~/Views/Shared/_LayoutAdmin.cshtml"; break; } Layout = clayout; } •Chúng ta thiết lập ViewBag.title dùng để chèn một chuổi dữ liệu hay một mảng dữ liệu mà ta muốn nó được hiện thị ngoài View, bạn có thể kết hợp với LingQ nhé, bạn có thể xem ví dụ dưới đây //HomeController.cs var data = (from s in _db.users select s).ToList(); View.Bag = data; return View() //Views/Home/Index.cshtml @foreach(var result in ViewBag.data){ @result.name @result.created_at }
CÁCH HIỂN THỊ TỪ CONTROLLER SANG VIEW Tại @RenderBody(): dùng để hiển thị điều khiển ta ra, có nghĩa hiển thị nội dung mà bạn muốn, ví dụ bạn muốn fix header footer cố định trang cho giao diện website @RenderBody render nội dung trang trang layout dùng chung VD: @ViewBag.Title @RenderBody() File ViewStart _ViewStart.cshtml: dùng để định nghĩa layout cho website, bạn thiết lập tùy biến sài layout được, giống Admin sài layout này, cịn user thì sai layout _ViewStart.cshtml: dùng để định nghĩa layout cho website, bạn thiết lập tùy biến sài layout được, giống Admin sài layout này, cịn user thì sai layout VD: @{ string CurrentName = Convert.ToString(HttpContext.Current.Request.RequestContext.RouteData.Values["Contr oller"]); string clayout = ""; switch (CurrentName) { case "Home": clayout = "~/Views/Shared/_LayoutHome.cshtml"; break; default: //Admin layout clayout = "~/Views/Shared/_LayoutAdmin.cshtml"; break; } Layout = clayout; } Chúng ta thiết lập ViewBag.title dùng để chèn chuổi liệu hay mảng liệu mà ta muốn thị ngồi View, bạn kết hợp với LingQ nhé, bạn xem ví dụ //HomeController.cs var data = (from s in _db.users select s).ToList(); View.Bag = data; return View() //Views/Home/Index.cshtml @foreach(var result in ViewBag.data){ @result.name @result.created_at } CÁC KIỂU TRUY VẤN ĐẾN ĐỐI TƯỢNG TRONG DB Các Cú Pháp để truy vấn Entity Framework: - Dùng câu lệnh truy vấn LIST: Namespace WebsiteBanHang.Controllers{ Public class HomeController : Controller { QuanLyBanHangEntities db = new QuanLyBanHangEntities(); Public ActionResult Index() { // Truy vấn lấy liệu alf danh sách KhachHang // Cách 1: Dùng câu lệnh truy vấn Var lstKH = from kh in db.KhachHangs select kh; Return View(lstKH); // Cách 2: Dùng phương thức hỗ trợ sẵn truy vấn Var lstKH = db.KhachHangs.ToList(); Return View(lstKH); } } - } Dùng câu lệnh truy vấn ĐỐI TƯỢNG (THƯỜNG DÙNG LÀM LOGIN, LOGOUT, GIỎ HÀNG, MÃ KH,… LÀ DUY NHẤT) : Namespace WebsiteBanHang.Controllers{ Public class HomeController : Controller { QuanLyBanHangEntities db = new QuanLyBanHangEntities(); Public ActionResult Index() { // Truy vấn lấy liệu đối tượng KhachHang KHƠNG có điều kiện Where // Cách 1: Dùng câu lệnh truy vấn Var lstKH = from kh in db.KhachHangs select kh; KhachHang khang = lstKH.FirstOrDefault(); // Kiểu lấy list, lấy vị trí Return View(lstKH); // Cách 2: Dùng phương thức hỗ trợ sẵn truy vấn KhachHang khang = db.KhachHangs.Single(); Return View(); // Truy vấn lấy liệu đối tượng KhachHang có điều kiện Where // Cách 1: Dùng câu lệnh truy vấn Var lstKH = from kh in db.KhachHangs where kh.MaKH==1 select kh; KhachHang khang = lstKH.FirstOrDefault(); // Kiểu lấy list, lấy vị trí Return View(lstKH); // Cách 2: Dùng phương thức hỗ trợ sẵn truy vấn KhachHang khang = db.KhachHangs.SingleOrDefault(n=>n.MaKH==2); Return View(khang); public ActionResult TruyVan1DoiTuong() { //Cách truy vấn đối tượng caua lệnh truy vấn //Bước lấy danh sách khách hàng var lstKH = from kh in db.KhachHang where kh.MaKH == select kh; //Bước láy đối tượng khách hàng dựa phương thức hỗ trợ KhachHang khang = db.KhachHang.SingleOrDefault(n=>n.MaKH==2); return View(khang); } // Truy vấn lấy liệu đối tượng KhachHang xếp theo tên dùng phương thức public ActionResult SortDuLieu() { //Phương thức xếp liệu tăng dần List lstKH = db.KhachHang.OrderBy(n => n.TenKH).ToList(); return View(lstKH); } } } public ActionResult SortDuLieu2() { //Phương thức xếp liệu giảm dần List lstKH = db.KhachHang.OrderByDescending(n => n.TenKH).ToList(); return View(lstKH); } } // Truy vấn lấy liệu GROUP Dữ liệu VIEW - Ở Bảng thành viên thành viên sử dụng hẹ thống phải đăng kí lúc có mã loại thành viên link với kiểu loại thành vine vip thường từ chia thành viên oke hay bth kiểu group qua VIEW ko qua controller Ở Controller thực : public ActionResult GroupDulieutrenview() { List lstKH = db.ThanhVien.OrderByDescending(n => n.TaiKhoan).ToList(); return View(lstKH); } // Này tạo list để lấy tất thành viên có bảnh thành viên í (bài ko dùng bảng khách hàng trên) xong sau lấy xog hêt thành viên bảng thành viên thực đẩy qua view - Ở View thực : @using Realstore.Models; @model List @{ } Layout = null; ViewBag.title = "GroupDulieu"; @foreach(var GroupLTV in Model.GroupBy(n=> n.MaLoaiTV)) { @GroupLTV.Key foreach(var item in GroupLTV) {@item.TaiKhoan
} } // Code có code lấy hàng từ controller đẩy lên thực vòng lặp foreach thực query, tạo biến GROUPLTV từ nhận giá trị mã loại // @GroupLTV.Key thực in mã loại thành viên ‘’Key’’ tương ứng với Mã Loại thành viên (1 2) // sau lại thực hiện, sau biết đc viên loại nào, tiếp tục query xem loại tv có thực tạo biến item để moi bảng lúc lấy hết giá trị // Nó moi Loại thành viên trc xong hết vịng, check lại xem loại tv ko tiếp tục moi người loai tv - Http GET hàm trả lại view, cịn Post hàm xử lý chức nên xử lý chức dùng post ko người dùng GET tự vào qua link Trả giá trị thông qua viewbag: - IEnumerable lstHDX = (IEnumerable)ViewBag.ListHDX; - IEnumerable lstHTD = ViewBag.ListHTD as IEnumerable; kiểu giá trị trả trả null ko có cịn ko có bão lỗi - @foreach (var item in Model.Take(3)){} – dùng vòng lặp lấy sản phẩm - Giả sử thông tin DB cần xuất chưa ký tự html chuyển ntn ?; - @Html.Raw(item.cauhinh) Ví dụ có tên loại sản phẩm bảng khác mà lại gọi bảng khác sử dụng cú pháp sau @Model.First().LoaiSanPham.TenLoai - Mới Nhất ! khác bảng ?à ko tới bảng có tên cần truy vấn trường tên đk Chèn link vơ dùng cú pháp @Url.Action("Index","Home") với index file chuyển đến home controoler file gửi Cách lấy sản phẩm từ bảng tới bảng khác (kiểu lấy chuyền) Bước tách menu view riêng ghép qua cú pháp @html.Action(“tên file partial”,”tên controller chứa file đó”) Bước