1. Trang chủ
  2. » Công Nghệ Thông Tin

MVC4Seminar lab9

4 455 10

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 715,98 KB

Nội dung

ThS. CNTT: Nguyễn Nghiệm – nghiemn@fpt.edu.vn Trang 1 BÀI 9: KIỂM LỖI MỤC TIÊU  Biết cách kiểm lỗi dữ liệu vào trong MVC4. MÔ TẢ Trong bài này bạn phải tạo trang web thêm mới một mặt hàng. Nếu nhập dữ liệu sai thì trang web sẽ thông báo lỗi tức thì với Jquery. Trang web này không những kiểm lỗi phía client mà còn kiểm lỗi trên server phòng ngừa khi hacker vượt qua tường rào JavaScript. Sau đây là hình ảnh của trang web khi nhập dữ liệu không đúng. ThS. CNTT: Nguyễn Nghiệm – nghiemn@fpt.edu.vn Trang 2 THỰC HIỆN  Bước 1: Bổ sung Annotation vào Model  Bước 2: Bổ sung action Validate()-GET vào ProductController  Bước 3: Tạo View Validate.cshtml  Bước 4: Bổ sung Validate()-POST vào ProductController Bước 1: Bổ sung Annotation vào Model Trong MVC4, Model được sử dụng để tiếp nhận dữ liệu vào từ giao diện. Nó cũng đồng thời quản lý các thực thể trong CSDL. Bây giờ bạn cọn biết một nhiệm vụ khác là kiểm loại dữ liệu vào. Với các Annotation đánh dấu trên các thuộc tính kết nối với các trường form, bạn có thể kiểm lỗi một cách hiệu quả cả 2 phía client và server. Sau đây là các annotation được sử dụng để kiểm lỗi:  Không không để trống Name và Image  UnitPrice phải là số dương  Image chỉ chấp nhận ảnh gif, jpg hay png  Description không vượt quá 2000 ký tự public class Product { public int Id { get; set; } [Required(ErrorMessage="Vui lòng nhập tên hàng hóa !")] public String Name { get; set; } [Required, Range(0, Double.MaxValue)] public double UnitPrice { get; set; } [Required, RegularExpression(@"\w+\.(gif|png|jpg)$")] public String Image { get; set; } [StringLength(2000)] public String Description { get; set; } public int CategoryId { get; set; } public String SupplierId { get; set; } public virtual Supplier Supplier { get; set; } public virtual Category Category { get; set; } } Bước 2: Bổ sung action Validate() - GET vào ProductController Action GET là action chỉ được phép gọi với phương thức GET của web để hiển thị form nhập liệu. Action này chuyển 2 selectlist để hiển thị lên DropDownList của view Validate.cshtml. [HttpGet] public ActionResult Validate() { ViewBag.CategoryId = new SelectList(db.Categories, "Id", "Name"); ViewBag.SupplierId = new SelectList(db.Suppliers, "Id", "Name"); return View(); } ThS. CNTT: Nguyễn Nghiệm – nghiemn@fpt.edu.vn Trang 3 Bước 3: Tạo View Validate.cshtml View Validate.cshtml là form nhập liệu có kiểm soát lỗi dữ liệu đầu vào dựa vào các qui luật kiểm lỗi đã được cài đặt sẵn trong Model. @model MVC4Seminar.Models.Product @{ ViewBag.Title = "Kiểm lỗi"; } @using (Html.BeginForm()) { <! Chống giả lập yêu cầu > @Html.AntiForgeryToken() <! Hiển thị kiểm lỗi phía server > @Html.ValidationSummary(true) <fieldset> <legend>Thông tin hàng hóa</legend> <div class="editor-label">Tên hàng hóa</div> <div class="editor-field"> @Html.TextBoxFor(model => model.Name) <! Hiển thị kiểm lỗi phía client với jquery > @Html.ValidationMessageFor(model => model.Name) </div> <div class="editor-label">Đơn giá</div> <div class="editor-field"> @Html.TextBoxFor(model => model.UnitPrice) <! Hiển thị kiểm lỗi phía client với jquery > @Html.ValidationMessageFor(model => model.UnitPrice) </div> <div class="editor-label">Hình ảnh</div> <div class="editor-field"> @Html.TextBoxFor(model => model.Image) @Html.ValidationMessageFor(model => model.Image) </div> <div class="editor-label">Chủng loại</div> <div class="editor-field"> @Html.DropDownList("CategoryId") </div> <div class="editor-label">Nhà cung cấp</div> <div class="editor-field"> @Html.DropDownList("SupplierId") </div> <div class="editor-label">Mô tả</div> <div class="editor-field"> @Html.TextAreaFor(model => model.Description, new { rows=5}) <! Hiển thị kiểm lỗi phía client với jquery > @Html.ValidationMessageFor(model => model.Description) </div> ThS. CNTT: Nguyễn Nghiệm – nghiemn@fpt.edu.vn Trang 4 <p> <input type="submit" value="Create" /> </p> </fieldset> } Bước 4: Bổ sung Validate() - POST vào ProductController Khi bạn nhấp vào nút [Create] thì form sẽ được kiểm lỗi phía client trước. Nếu tất cả điều hợp lệ thì dữ liệu form sẽ được chuyển đến action Validate() – POST để xử lý. Tại đây dữ liệu sẽ được kiểm tra lại một lần nữa. 2 công việc kiểm lỗi được thực hiện ở đây là  ValidateAntiForgeryToken: ngăn chặn yêu cầu giả  ModelState.IsValid: kiểm lỗi dữ liệu của tham số model [HttpPost, ValidateAntiForgeryToken] public ActionResult Validate(Product model) { if (ModelState.IsValid) { db.Products.Add(model); db.SaveChanges(); } ViewBag.CategoryId = new SelectList(db.Categories, "Id", "Name"); ViewBag.SupplierId = new SelectList(db.Suppliers, "Id", "Name"); return View(model); } . vào dựa vào các qui luật kiểm lỗi đã được cài đặt sẵn trong Model. @model MVC4Seminar. Models.Product @{ ViewBag.Title = "Kiểm lỗi"; }

Ngày đăng: 17/03/2014, 00:32

Xem thêm

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w