Professional Documents
Culture Documents
NET Core
Tìm các mặt hàng có tên chứa tên và giá trong khoảng giá nhập vào. Nếu không nhập một
hoặc nhiều ô sẽ bỏ qua.
Hướng dẫn:
Tạo action Search() trong HangHoasController tiếp nhận 3 tham số Name (tên cần tìm), Min
(giá nhỏ nhất), Max (giá lớn nhất). Sử dụng LINQ để truy tìm các mặt hàng có tên chứa tên
nhập vào, giá trong khoảng giá nhập vào và chuyển kết quả tìm kiếm cho view Search.cshtml
để hiển thị.
Hãy chú ý câu lệnh truy vấn LINQ: _context.HangHoas .Where(p =>
p.TenHH.Contains(Name) && p.DonGia >= Min && p.DonGia <= Max
@model IEnumerable<D14_EFCore.Models.HangHoa>
@{
ViewData["Title"] = "Search";
}
<fieldset>
<legend>Tìm kiếm</legend>
<form>
<text>Name: </text><input name="Name"/>
<text>Min Price: </text><input name="Min" type="number" step="0.01"
min="0" />
<text>Max Price: </text><input name="Min" type="number" step="0.01"
min="0" />
<button>Search</button>
</form>
</fieldset>
3 Phân trang
Trong bài này ban sẽ phải hoàn thiện mã để hiển thị dữ liệu đầy đủ cho một số PartialView
của Layout chính. Cụ thể bạn phải hiển thị chủng loại trên _Category.cshtml, nhà cung cấp
trên _Supplier.cshtml và 3 math hàng ngẫu nhiên trên _Promotion.cshtml. Sau đây là các
PartailView đã được cấp dữ liệu đầy đủ.
Yêu cầu của trang chủ gồm 2 phần sản phẩm ngẫu nhiên và 3 loại hàng ngẫu nhiên cùng với 5
sản phẩm của mỗi loại được trình bày như sau
6 Session
// This method gets called by the runtime. Use this method to configure the HTTP
request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseSession();
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
Mặc định Session chỉ lưu kiểu chuỗi, số, do đó để lưu [mảng] đối tượng cần viết phương thức Set/Get
dạng extension. Tạo lớp SessionHelper có 2 phương thức extension:
HttpContext.Session.SetString(“ten”, “gia-tri”);
HttpContext.Session.SetInt32(“ten”, gia-tri);
HttpContext.Session.Set<T>(“ten”, doi-tuong);
Ví dụ:
return View();
}
<tr>
<td>Mã</td>
<td>@hh.MaHH</td>
</tr>
<tr>
<td>Tên</td>
<td>@hh.TenHH</td>
</tr>
<tr>
<td>Đơn giá</td>
<td>@hh.DonGia.ToString("#,##0") đ</td>
</tr>
<tr>
<td>Số lượng</td>
<td>@hh.SoLuong</td>
</tr>
<tr>
<td>Hình</td>
<td>
<img src="~/images/@hh.Hinh" />
</td>
</tr>
</table>
Đã đăng nhập:
[HttpPost]
public IActionResult Login(LoginViewModel model)
{
//Kiểm tra xem mã người dùng có hợp lệ không?
if (model.MaKH.Length > 5 && model.MatKhau.Length > 5)
{
KhachHang kh = new KhachHang
{
MaKh = model.MaKH,
HoTen = model.MaKH,
MatKhau = model.MatKhau
};
HttpContext.Session.Set("KhachHang", kh);
return RedirectToAction("Index", "Home");
}
else
{
ViewBag.Loi = "Sai thông tin đăng nhập";
return View();
}
}
public IActionResult Logout()
{
HttpContext.Session.Remove("KhachHang");
return RedirectToAction("Index", "Home");
}
7.3 LoginViewModel
public class LoginViewModel
{
[Display(Name = "Mã khách hàng")]
[MaxLength(50)]
public string MaKH { get; set; }
[Display(Name = "Mật khẩu")]
[MaxLength(50)]
[DataType(DataType.Password)]
public string MatKhau { get; set; }
}