有很長時間沒來 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...