Tìm hiểu về Models

Một phần của tài liệu TỔNG QUAN VỀ ASP.NET 3.5 potx (Trang 41 - 45)

2 Ví dụ xây dựng ứng dụng với ASP.NET MVC Framework

2.6Tìm hiểu về Models

Một model trong ứng dụng ASP.NET MVC chứa tất cả các nghiệp vụ logic mà khơng có trong controllers và views. Models chứa tất cả các tầng truy xuất dữ liệu logic và tầng nghiệp vụ logic. Ví dụ, nếu sử dụng LINQ to SQL để truy nhập dữ liệu thì phải tạo LINQ to SQL class ( file định dạng dbml ) trong folder Models.

Mô hình dữ liê ̣u LINQ to SQL ( Figure 15 )

Figure 15. Mô hình dữ liê ̣u LINQ to SQL

Xây dự ng lớp trợ giúp cho việc thao tác với dữ liệu thông qua LINQ to SQL

DataClasses.cs using System; using System.Collections.Generic; using System.Linq; namespace BanHang.Models {

Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 19

partial class DataClassesDataContext {

public List<LoaiSanPham> LayCacLoaiSanPham() {

return LoaiSanPhams.ToList(); }

public List<SanPham> LaySanPhamTuLoaiSanPham(string loaisanpham) {

return SanPhams.Where(l => l.LoaiSanPham1.Id == loaisanpham).ToList(); }

public SanPham LaySanPhamQuaID(int id) {

return SanPhams.Single(s => s.Id == id); }

} } }

Với lớp trợ giúp có thể thao tác dễ dàng hơn với cơ sở dữ liê ̣u khi cần . Chẳng ha ̣n với lớp DataClasses.cs ở trên khi cần truy nhâ ̣p để lấy thông tin về sản phẩm có mã Id , có thể viết như sau trong bất kỳ một code -behind nào của Views (ví dụ với view DanhMucLoaiSanPham.aspx.cs trong folder Views):

Figure 16. Binding data và o trong Views\DanhMucLoaiSanPham.aspx.cs

Khi đó ta phải sửa đổi la ̣i file Views\DanhMucLoaiSanPham.aspx cho phù hợp với code trên

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true"

CodeBehind="DanhMucLoaiSanPham.aspx.cs"

Inherits="BanHang.Views.SanPham.DanhMucLoaiSanPham" %>

<asp:Content ID="viewDanhMucLoaiSanPham" ContentPlaceHolderID="MainContent" runat="server">

Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 20

<h1>

Đây là danh mục loại sản phẩm</h1>

<asp:ListView ID="listLoaiSanPham" runat="server"> <LayoutTemplate> <ul> <asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder> </ul> </LayoutTemplate> <ItemTemplate> <li> <%= Html.ActionLink(Eval("TenLoaiSanPham"), "DanhSachSanPham/" + Eval("TenLoaiSanPham"), "SanPham") %> </li> </ItemTemplate> </asp:ListView> </asp:Content>

Views chỉ chứa tất cả những gì hiển thị cho người dùng trên browser, Controllers chỉ chứa các logic mà trả về view nào cho người dùng hoặc hướng từ action này đến action khác. Còn lại tất cả đều được viết trong Models.

2.7 Cấu trúc Views\Shared\Site.Master

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="BanHang.Views.Shared.Site" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title><%= Html.Encode(ViewData["Title"]) %></title>

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

</head> <body>

<div class="page"> <div id="header"> <div id="title">

<h1>My Sample MVC Application</h1> </div> <div id="logindisplay"> <% Html.RenderPartial("LoginUserControl"); %> </div> <div id="menucontainer"> <ul id="menu">

<li><%= Html.ActionLink("Home", "Index", "Home")%></li>

<li><%= Html.ActionLink("SanPham", "Index", "SanPham")%></li> <li><%= Html.ActionLink("About Us", "About", "Home")%></li> </ul>

</div> </div>

<div id="main">

Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 21

<div id="footer">

My Sample MVC Application &copy; Copyright 2008 </div> </div> </div> </body> </html> 2.8 Kết quả

Figure 17. Kết quả chạy ứng dụng khi thêm SanPham vảo ứng dụng ASP.NET MVC

3 Câu hỏi ôn tập

Hỏi: Views của MVC có thể sử dụng AJAX, javascript khơng?

Đáp: Được. Về bản chất, view trong ASP.NET MVC Framework cũng là một trang .aspx như với mơ hình

WebForm vì thế có thể thực hiện các tác vụ tương tự. Vì thế việc sử dụng jQuery, ASP.NET AJAX, và javascript đều có thể thực hiện được.

Hỏi: Xây dựng ứng dụng với ASP.NET MVC Framework thì trang web sẽ chạy nhanh hơn so với xây dựng trên

nền WebForm cũ?

Đáp: Chưa hẳn là thế. Nếu xây dựng trang web với nền tảng WebForm mà sử dụng ít các controls, usercontrols

hoặc ít events thì giá trị ViewState và PostBack khơng lớn nên sự thực thi không hẳn đã chậm. Trang web xây dựng theo nền WebForm chỉ thực hiện chậm khi giá trị của ViewState là quá lớn.

Hỏi: Có phải thực hiện test và debug trên ASP.NET MVC Framework dễ dàng hơn so với nền tảng WebForm. Đáp: Đúng. Vì việc thực hiện test và debug trên ASP.NET MVC Framework chỉ phải thực hiện trên Controller

nên dễ dàng kiểm soát hơn so với thực hiện test và debug trên WebForm.

Microsoft Vietnam – DPE Team |Bài số 3: Tổng quan về ASP.NET MVC Framework 22

Một phần của tài liệu TỔNG QUAN VỀ ASP.NET 3.5 potx (Trang 41 - 45)