Aspx.net / MVC — August 14, 2016 at 5:34 pm

Chương 5: Tương tác dữ liệu cơ bản thủ công và Dùng mã tự động trên CSDL (P2)

by

1. Xem chi tiết ( details )

// Action details dùng xem chi tiết 1 sản phẩm

Action Details :

public ActionResult Details(int id)

{

return View(db.Students.Find(id));

}

View Details

 

@model Mvc3App.Models.Student

 

@{

ViewBag.Title = “Details”;

Layout = “~/Views/Shared/_Layout.cshtml”;

}

 

<h2>Details</h2>

 

<fieldset>

<legend>Student</legend>

 

<div class=”display-label”>

Name

</div>

<div class=”display-field”>

@Html.DisplayFor(model => model.Name)

</div>

</fieldset>

<p>

@Html.ActionLink(“Edit”, “Edit”, new { id=Model.ID }) |

@Html.ActionLink(“Back to List”, “Index”)

</p>

Chạy ứng dụng , nhập /Sample3 , nhấn detail link ta sẽ thấy được thông tin chi tiết Student.

2. Một vài vấn đề phát sinh trong thiết kế CRUD ( create – update – delete) CSDL

Vấn đề 1 :

 

<script src=”@Url.Content(“~/Scripts/jquery.validate.min.js”)” type=”text/javascript”></script>

<script src=”@Url.Content(“~/Scripts/jquery.validate.unobtrusive.min.js”)” type=”text/javascript”></script>

Đây là khai báo sử dụng 2 thư viện hỗ trợ validate khi nhập liệu .Ví dụ như 1 trường nhập liệu phải là số , hay trường không được để trống thì script tự động thông báo lỗi .Việc định nghĩa các trường này được khai báo trong Model của của các đối tượng . Giả sử ta có lớp Student như sau :

 

public class Student

{

public int ID { get; set; }

[Required(ErrorMessage = “không được rỗng”)]

public string Name { get; set; }

[RegularExpression(“[0-9]{1,5}”, ErrorMessage = “Bạn phải nhập số”)]

public int Phone { get; set; }

}

// khi create , edit đối tượng Student thì trường Name phải nhập ( không được để trống ) .Trường Phone phải nhập số .Nếu không nhập đúng thì javascript sẽ báo lỗi ngay .Đây là tính năng validate hỗ trợ thiết kế model .

– còn rất nhiều attribute hỗ trợ thiết kế model như là định tên hiển thị 1 trường ( giúp ta hiển thị tên các trường kiểu tiếng việt ) , template như tạo 1 ô textArea ( ô textBox lớn ) , hay ckEditor để nhập liệu … Các tính năng này sẽ được học trong phần định nghĩa CSDL với EF code first .

Vấn đề 2 :  Trong các Action Create có các khai báo như sau :

 

[HttpPost]

public ActionResult Create([Bind(Exclude = “ID”)]Student model)

{

db.Students.Add(model);

db.SaveChanges();

return View();

}

// khai báo trên chỉ định không kiểm tra ( validate) trường ID vì khi create thì trường ID ta để tự động tăng và không cần nhập dữ liệu này trên View .

Vấn đề 3 :  Việc xử lý các bảng chứa mối quan hệ

Giả sử có 2 bảng Product ( sản phẩm ) và bảng Category ( loại sản phẩm ) 2 bảng này có mối quan hệ 1 – n với nhau .Việc CRUD có đôi chút khác so với bảng Student ở trên .Và được học cụ thể trong phần tiếp

3. Chú ý :

– Trên đây ta đã xây dựng 4 Action là : Create , Edit , Delete , Details .Cùng vói Action Index ở phần trước .Đây là 5 Action cơ bản để quản lý thông tin 1 đối tượng ( hiển thị danh sách , thêm , sửa , xóa , xem chi tiết )

– Chúng ta có thể đặt tên bất kỳ cho các Action này .Tuy nhiên nếu đổi tên khác thì chúng ta cần đổi tên lại các ActionLink gọi chúng trong View .Ví dụ trog View muốn gọi Action Create ta dùng ActionLink ( ActionLink là 1 HtmlHelper của Razor để sinh ra mã html là 1 thẻ a ( thẻ link ) ) ta khai báo trong view là :

 

@Html.ActionLink(“Create New”, “Create”)

// ta có thể đổi tên hiển thị ActionLink thành : @Html.ActionLink(“Thêm Mới”, “Create”)

// Khi đổi Action Create trong Controller thành CreateStudent thì cần đổi ActionLink là :

@Html.ActionLink(“Create New”, “CreateStudent”)

– Một lời khuyên là với các tác vụ cơ bản trên thì nên để tên chuẩn mà Microsoft mặc định , để dễ dàng quản lý thao tác cũng như dùng mã mã tự động tạo ra .

– Chúng ta làm quen với cách VS sinh mã máy tạo View , chúng ta dùng các kiến thức về CSS , html , jQuery có thể tùy biến giao diện View theo ý muốn.

– Ngoài ra thiết kế view cần hỗ trợ các tính năng kiểm tra 1 trường không được bỏ trống , phải là số , email … Vấn đề này sẽ được đề cập trong phần template.

4. Dùng VS sinh mã tự động thao tác CSDL

Mã nguồn : Sample4Controller và View tương ứng

– Lập trình MVC không còn khái niệm kéo thả và xử lý Control như webform , tuy nhiên VS cũng hỗ trợ mạnh mẽ việc sinh mã máy

– Tại phần 6 chúng ta đã code thủ công các thao tác thêm , sửa , xáo , xem , xem chi tiết .Tại phần này chúng ta sẽ dùng VS để tự động sinh các mã đó mà không cần phải code bằng tay

– Với các thao tác cơ bản như : xem danh sách , sửa , xóa , xem chi tiết , cập nhật ở phần trên.Có thể dùng VS sinh mã tự động cho cả View và Controller.

– Khi hiểu bản chất của code , có thể dùng VS sinh mã máy , và tùy chỉnh mã máy sau khi được sinh tự động .Đó là sự kết hợp việc lập trình với sự hỗ trợ của môi trường thiết kế giúp xây dựng ứng dụng được nhanh hơn .

– Ở trên ta đã làm quen với việc dùng VS sinh mã máy cho View , dưới đây sẽ dùng VS tạo mã máy cho cả View và Controller

Bước 1 :

– Xóa bỏ chuối kết nối đặt trong file web.config .Có một lỗi nguyên nhân được xác định là do đặt chuỗi kết nối sẵn trong webconfig.Chúng tôi đã tìm ra lỗi và đã tìm được giải phải từ Microsoft .Hy vọng các bản VS mới nhất sẽ không mắc vấn đề này .Khi xóa chuối kết nối, tạo Controller xong rồi nhập lại chuỗi kết nối .

Bước 2 :

– Tạo mới Sample4Controller rồi chọn các thông số như hình sau :

– Nhấn Add , và hãy xem kết quả VS tự động tạo mã cho Sample4Controller và View tương ứng .

– Ta được kết quả là các Controller , View tương tự như phần 6 tạo thủ công code

– Hãy xem và so sánh Sample4Controller và Sample3Controller để thấy sức mạnh của IDI VS sinh mã tự động tốt đến mức nào ?

– Nhập lại chuỗi kết nối CSDL trong file web config .Chạy ứng dụng , gọi /sample4 .Ta được ứng dụng như phần trước đã làm .

Kết quả khi chạy Sample4Controller (/sample4) tương tự Sample3 như sau :

Nguồn: laptrinhviet.net

Leave a Comment

Your email address will not be published. Required fields are marked *