與 的區別,顯示資料與繫結資料

2022-01-11 02:57:12 字數 2085 閱讀 3909

有很長時間沒來 csdn 的部落格了。今天在社群裡看到乙個網友提問關於 asp.net 中「<%# %>」 的問題,所以還是想把這篇文章發到自己的部落格上。雖然不是非常很高深的問題,但是還是應該多加留意……

aspx頁面中,

<%= %>

<%# %>的區別

關於這個問題,在多數的

asp.net

的教材中,都提到了一些。

<%= %>

與<%# %>

的區別在於:繫結時機不同,

<%# %>

是在控制項呼叫

databind

函式的時候才被確定。對於

<%= %>

,我想你應該不會陌生,在

asp時代,它就相當於

response.write

。在asp.net

時代也一樣。暫時先不去理會教材中說的,也先把「繫結時機」放到一邊。

<%= %>

與<%# %>

的區別是:前者是輸出,而後者是賦值!即:

<%= "a" %>

相當於:

response.write("a");

<%# "a" %>

相當於:變數

="a";

先來看乙個例子:

<

html

>

<

body

>

<

asp:button

text

=<%

# "hello, the internet!"%>

runat

="server"

id="testbutton" />

body

>

html

>

這句話相當於賦值,把上面這個勾黑句子翻譯成後台**就是:

testbutton.text="hello, the internet!";

第二個例子:

<

html

>

<

body

>

<%= "hello, the internet!" %>

<%# "hello, the internet!" %>

body

>

html

>

<%= "hello, the internet!" %>

就相當於:

response.write("hello, the internet!");

那麼第二個

<%# %>

怎麼解釋呢?如果按照我「賦值」的說法,它把值賦給誰了呢?

其實翻譯成後台**是這樣的:

(new system.web.ui.literalcontrol()).text="hello, the internet!";

一段文字,雖然它不被包含在任何開始結束標籤之間,但是[font='courier]asp.net[/font]也認為它是乙個控制項。乙個[font='courier]literalcontrol[/font]控制項。所以,[font='courier]<%# %>[/font]就是把值賦給[font='courier]literalcontrol[/font]控制項的

text

屬性。我做過乙個生成靜態 html **的類,使用的手法是包裝了 htmltextwriter這個類。並且我做了跟蹤除錯。跟蹤的結果令我感到很意外。asp.net 會把所有的未標有「runat=server」屬性的標記,統統看作是乙個literalcontrol 控制項。例如在上面那些 html **裡,例如在文章開始處的那些 html **裡,asp.net會認為是有三個伺服器控制項,分別是:literalcontrol、button、literalctontrol。第乙個literalcontrol 的 text 值為「hello, theinternet!」,而最後乙個 literalcontrol 的 text值是「

」。也就是說,<%= %> 應早於 <%#%>,先被「翻譯」出來……

與 的區別,顯示資料與繫結資料

有很長時間沒來 csdn 的部落格了。今天在社群裡看到乙個提問關於 asp.net 中 的問題,所以還是想把這篇文章發到自己的部落格上。雖然不是非常很高深的問題,但是還是應該多加留意 aspx 頁面中,與 的區別關於這個問題,在多數的 asp.net 的教材中,都提到了一些。與 的區別在於 繫結時機...

flex繫結資料

在使用flex開發的過程中,資料繫結是一定會遇到的,這種技術簡單,又有點好玩,重要的是它讓開發變得簡單了。在flex中,資料繫結的方式有這麼三種 示例1中的繫結方式即是第一種繫結方式,在 中直接填寫inputunit.text,表示label顯示的內容和textinput是關聯的,它會隨著texti...

HighChat動態繫結資料 資料後台繫結(三)

今天看了幾位大佬的部落格,學到了一些,現在分享一下,也作為以後的參考 不多說看 1.後台 public actionresult ajax2 reportdata.categories key double?value double?value1 reportitem ri1 new reporti...