Sự khác nhau giữa <%# và <%= trong asp.net

Các bài viết giới thiệu và hướng dẫn dành cho lập trình Web Forms

Điều hành viên: vietluyen

Đăng trả lời
neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: Thứ 7 26/05/2007 4:31 pm
Been thanked: 8 times

Sự khác nhau giữa <%# và <%= trong asp.net

Gửi bài by neverland87 »

Tên bài viết: Sự khác nhau giữa <%# và <%= trong asp.net
Tác giả: Sưu tầm
Cấp độ bài viết: 1
Tóm tắt:
Khi sang làm việc với ASP.NET MVC, chúng ta phải làm việc nhiều hơn với thẻ <%= %> và <%# %> trong ASP.NET. Và thường thì khó phân biệt được sự khác nhau giữa các thẻ đó. Sau đây là đoạn code
Trang default.aspx

Mã: Chọn tất cả

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Difference._Default" %>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></title><head><body><form id="form1" runat="server"><div><p>Dấu = : <%= this.TestValue %></p><p>Dấu # : <%# this.TestValue %></p><p>Thuộc tính trong dấu = : <asp:Label runat="server" ID="_equals" Text="<%= this.TestValue %>" /></p><p>Thuộc tính trong dấu # : <asp:Label runat="server" ID="_pound" Text="<%# this.TestValue %>" /></p></div></form></body></html>
Và đây là CodeBehind

Mã: Chọn tất cả

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace Difference{ public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { _testValue = "2"; }  protected void Page_PreRenderComplete(object sender, EventArgs e) { //DataBind(); _testValue = "3"; }   public string TestValue { get { return _testValue; } }  private string _testValue = "1"; } }
Kết quả khi chạy như sau:

- Nếu chưa comment đoạn code DataBind(); trong PreRenderComplete

Mã: Chọn tất cả

Dấu = : 3 Dấu # : Thuộc tính trong dấu = : <%= this.TestValue %> Thuộc tính trong dấu # : 
- Nếu bỏ comment đoạn DataBind();

Mã: Chọn tất cả

Dấu = : 3Dấu # : 2Thuộc tính trong dấu = : <%= this.TestValue %>Thuộc tính trong dấu # : 2
Kết quả trên là do:

<%= expressions %> được thực hiện tại thời gian render trang web
<%# expressions %> được thực hiện khi ta gọi phương thức DataBing(), và thẻ này sẽ không được thực hiện nếu ta không gọi phương thức DataBind()
<%# expressions %> có thể được sử dụng trong thuộc tính của các server controls, còn <%= %> không thể làm thuộc tính cho các server controls.

Theo http://hacodingjournal.blogspot.com/
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT
vanlam_it
Thành viên chính thức
Thành viên chính thức
Bài viết: 38
Ngày tham gia: Chủ nhật 13/04/2008 6:57 pm

Re: Sự khác nhau giữa <%# và <%= trong asp.net

Gửi bài by vanlam_it »

bạn có thể giải thích thời gian render là gì vào lúc nào không? thanks
neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: Thứ 7 26/05/2007 4:31 pm
Been thanked: 8 times

Re: Sự khác nhau giữa <%# và <%= trong asp.net

Gửi bài by neverland87 »

vanlam_it đã viết:bạn có thể giải thích thời gian render là gì vào lúc nào không? thanks
Là khoảng thời gian server nhận yêu cầu từ phía client, sau đó đọc ngang qua các thành phần tĩnh trong trang (các thẻ HTML không chứa phần xử lý động), và nhận lấy và xử lý các thành phần động, cuối cùng trả lại trang tĩnh cho client . Kết thúc chuyển giao ^ ^
Để tính thời gian render, bạn tham khảo link sau:
http://www.thejoyofcode.com/Time_taken_ ... P.NET.aspx
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT
Đăng trả lời

Quay về