Cấp bậc tác giả:

TRAINING

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

Được viết bởi QuangIT ngày 01/07/2012 lúc 04:14 PM
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ẻ đó.
  • 0
  • 8858
Tải tệp tin: Click ở đây

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

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
<%@ 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
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
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();

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

  1. <%= expressions %> được thực hiện tại thời gian render trang web
  2. <%# 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()
  3. <%# 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.

Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML