Thứ Ba, 28 tháng 2, 2012

Giới thiệu về Razor ViewEngine của ASP.NET MVC 3

ASP.NET MVC 3 không còn là một cái gì đó quá mới với cộng đồng lập trình .NET nữa. Bài này chỉ giới thiệu về ASP.NET MVC 3 và nó rất hữu ích cho các bạn nào mới lần đầu tiếp cận với ASP.NET MVC 3 và Razor.

Trước tiên, kiến trúc MVC là việc chia tất cả mục của một ứng dụng ra làm ba thành phần (component) khác nhau Model, View và Controller:

Model: Model được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở Model. Dữ liệu vào từ người dùng sẽ thông qua View được kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận, và lưu dữ liệu là một phần của Model.

View: View hiển thị các thông tin cho người dùng của ứng dụng và được giao nhiệm vụ cho việc nhận các dữ liệu vào từ người dùng, gửi đi các yêu cầu đến bộ điều khiển, sau đó là nhận lại các phản hồi từ bộ điều khiển và hiển kết quả cho người dùng. Các trang HTML, JSP, các thư viện thể và các file nguồn là một phần của thành phần View.

Controller: Controller là tầng trung gian giữa Model và View. Controller được giao nhiệm vụ nhận các yêu cầu từ phía máy khách. Một yêu cầu được nhận từ máy khách được thực hiện bởi một chức năng logic thích hợp từ thành phần Model và sau đó sinh ra các kết quả cho người dùng và được thành phần View hiển thị. ActionServlet, Action, ActionForm và struts-config.xml là các phần của Controller.

Sự ra đời của Razor View Engine đi kèm với ASP.NET MVC 3 đã giải tỏa cơn khát cần phải có một View Engine phù hợp hơn cho ASP.NET MVC và chính thức được Microsoft hậu thuẫn.

Razor View Engine có các mục tiêu thiết kế chính đó là:
Dễ sử dụng và dễ học: mã sử dụng trong Razor là sự phối hợp giữa ngôn ngữ lập trình C# hoặc VB.NET với mã HTML. Sự phối hợp này rất tự nhiên và dễ viết. Razor không lệ thuộc vào ASP.NET runtime. Thông minh.
Dưới đây là mã một ví dụ đơn giản sử dụng Razor

Model:

public class CategoryViewModel

{

public int ID { get; set; }

public string Name { get; set; }

}

View: Razor rất thông mình, có thể phân biệt được dễ dàng đâu là code C#, đâu là mã HTML, nó chỉ cần ký tự @ để cho biết điểm khởi đầu của một đoạn code C# và thậm chí chúng ta còn có thể trộn lẫn mã HTML và C# với nhau một cách phức tạp hơn mà Razor vẫn nhận ra được.

@model IEnumerable<No1.CMS.Models.CategoryViewMode>

<h3>Chuyên mục</h3>

<ul>

@foreach (var item in Model)

{

<li>@Html.ActionLink(item.Name, "Category", new { id=item.ID })</li>

}

</ul>

Controller:

public ActionResult CategoryList()

{

var category = db.Categories;

return PartialView(category.ToList());

}

Không có nhận xét nào:

Đăng nhận xét