Ngày gửi: 29/06/2009 lúc 3:58 chiều | Đã khóa IP
|
|
|
Bạn
đang gặp vấn đề thiết kế layout chung cho website của mình? MasterPage
có thể là một đáp án tốt cho bạn giải quyết bài toán trên.
Với MasterPage để tạo một giao diện chung nhất cho Website của mình. Ví
dụ website của bạn có layout gồm 5 phần banner, footer, left, right
Và
content(phần chứa nội dung hiển thị cho các tin). Như vậy bạn có thể
thấy trên trang web có các phần có cách trình bầy không thay đổi trong
quá trình duyệt tin. banner, footer, left, right: bạn có thể để các
phần này vào một MasterPage và tất các trang web trong website của bạn
sẽ áp dụng layout này thông qua contentpage I. Tạo MasterPage Các
bước tạo MasterPage giống với tạo các trang aspx bình thường nhưng trên
hộp Add New Item bạn chọn MasterPage bạn thấy dưới ô đặt tên phần mở
rộng của nó sẽ là Master. Bạn có thể tạo nhiều MasterPage cho ứng dụng web của mình. Ví dụ: Code 1. <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ; <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>MasterPage</title> <style type="text/css"> html{ background-color:#e5e5e5; font-family:Verdana;} .content{ background-color:White; border:black 1px solid; width:700px; margin:auto;} .leftcolumm{ float:left; border-right:black 1px solid; width:200px; padding:5px; height:300px} .rightcolumm{ float:left; padding:5px; height:300px} </style> </head> <body> <form id="form1" runat="server"> <div class="content"> <div class="leftcolumm"> <asp:ContentPlaceHolder ID="contentplace1" runat="server"></asp:ContentPlaceHolder> </div> <div class="rightcolumm"> <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </div> </form> </body> </html> Để sử dụng MasterPage cho các trang aspx bạn cần khai báo trên chỉ dẫn <%@ Page %> với thuộc tính MasterPageFile=”Tên _MasterPage của bạn” ví dụ code 2 <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" %> <asp:Content ID="contentleft" ContentPlaceHolderID="contentplace1" runat="server"> Trinh bay menu Left<br /> Trinh bay menu Left<br /> Trinh bay menu Left<br /> Trinh bay menu Left<br /> </asp:Content> <asp:Content ID="content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> Trinh bay noidung<br /> Trinh bay noidung<br /> Trinh bay noidung<br /> Trinh bay noidung<br /> </asp:Content> Trên trang aspx bạn khai báo 2 điều khiển asp:content và trong thuộc tính của nó bạn thiết lập ContentPlaceHolderID=”Ten_Placeholder trong trang masterPage”. Tạo một Content mặc định Bạn
không thể kết hợp một điều khiển Content với tất cả các điều khiển
ContentPlaceHolder. Khi trên trang MasterPage của bạn có 3
ContentPlaceHolder mà trong trang aspx của bạn chỉ sử dụng hai điều
khiển aspContent và chỉ đến 2 ContentPlaceHolder trên trang MasterPage
khi đó mặc định ContentPlaceHolder thứ 3 vẫn được hiển thị. Đăng ký Master Page trong WebConfiguration Bạn có thể áp dụng MasterPage cho tất cả các trang trong một Folder hay tất cả các Content trong ứng dụng web của mình. Thay
vì việc trong mỗi trang aspx bạn phải gọi lời chỉ dẫn trang thẻ chỉ dẫn
<%@ Page %> thì bạn có thể thêm nó vào trong file webconfiguration Trong
ví dụ dưới đây là cách bạn sẽ đăng ký một trang SimpleMasterPage vào
ứng dụng web của mình để có thể áp dụng cho tất cả các trang trong foder(Sub Folder) chứa Chú ý rằng file web.config này phải cùng nằm trong foleder đó: <system.web> <pages masterPageFile="~/SimpleMasterPage.master" /> </system.web> Sử dụng FindControl trong MasterPage. Khi
bạn cần chỉnh sửa hay lấy thông tin của 1 điều khiển từ MasterPage bạn
có thể sử dụng phương thức FindControl() trong một Content Page Ví dụ Trang Findcontrol.master <%@ Master Language="C#" AutoEventWireup="true" CodeFile="Findcontrol.master.cs" Inherits="Findcontrol" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ; <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Findcontrol</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblTitle" runat="server" /><br /> <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html> Trang Findcontrol.aspx <%@ Page Language="C#" MasterPageFile="~/Findcontrol.master"%> <script runat="server"> void Page_Load(object sender, EventArgs e) { Label lbl = (Label)Master.FindControl("lblTitle"); lbl.Text = "Trung tam dao tao cong nghe cao iTechPro"; } </script> <asp:Content ID="content" runat="server" ContentPlaceHolderID="ContentPlaceHolder1"> Lay gia tri tu masterpage<br /> Lay gia tri tu masterpage<br /> Lay gia tri tu masterpage<br /> Lay gia tri tu masterpage<br /> Lay gia tri tu masterpage<br /> </asp:Content> Trình bày thuộc tính MasterPage Bạn có thể trình bày thuộc tính , phương thức từ MasterPage và có thể chỉnh sửa thuộc tính hay phương thức từ trang Content. Ví dụ Trang Expose.master <%@ Master Language="C#" AutoEventWireup="true" CodeFile="Expose.master.cs" Inherits="Expose" %> <script runat="server"> public string BodyTitle { get { return lblBody.Text; } set { lblBody.Text = value; } } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ; <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Expose MasterPage Property</title> </head> <body> <form id="form1" runat="server"> <div> <h1><asp:Label ID="lblBody" runat="server" Text="iTechPro"></asp:Label></h1> <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html> Trang Expose.aspx <%@ Page Language="C#" MasterPageFile="~/Expose.master" AutoEventWireup="true" %> <%@ MasterType VirtualPath="~/Expose.master" %> <script runat="server"> void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Master.BodyTitle = "Trung tam dao tao cong nghe cao iTechPro"; } } </script> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> Property, Property, Property, Property, Property, <br /> Property, Property, Property, Property, Property, <br /> Property, Property, Property, Property, Property,<br /> Property, Property, Property, Property, Property<br /> </asp:Content> Trong
ví dụ trên bạn sẽ thấy một điểm mới đó là chỉ dẫn MasterType, để sử
dụng được thuộc tính hay phương thức từ MasterPage ta phải thêm vào chỉ
dẫn MasterType và đặt thuộc tính VirtualPath=”Ten_Mastepage”.
__________________
YM: DUCVINH83
0912 822334
|