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:
- <%= 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.
Nguồn bài viết:
Dngaz.com