今天第一天開(kāi)通了博客,心情樂(lè )滋滋的,因為可以和園子里的朋友一起研究技術(shù)了。我希望把平時(shí)在項目中積累的知識以及自己學(xué)習的知識同園子里的朋友分享分享。為我們園子的壯大付出自己的一點(diǎn)努力。這是我發(fā)表的第二篇話(huà)題,希望對這<%%>語(yǔ)法不熟悉的朋友提供幫助,對已經(jīng)熟悉的朋友,希望能提出你們寶貴的意見(jiàn)。
在asp.net中經(jīng)常出現包含這種形式<%%>的html代碼,我這里特別收集了,總的來(lái)說(shuō)包含下面這樣幾種格式:
一. <%%>
這種格式實(shí)際上就是和asp的用法一樣的,只是asp中里面是vbscript或者javascript代碼,而在asp.net中是.net平臺下支持的語(yǔ)言。
特別注意:服務(wù)器控件中不能有<%%>語(yǔ)法
(這里我用C#代碼)
<%
int a = 2;
int b = 3;
int c = a + b;
Response.Write(c);
%>
二. <%#%>
如果是這種格式的話(huà)那就是asp.net下特有的,它是控件數據綁定的語(yǔ)法,且必須要調用該控件的DataBind()方法才執行(或者整個(gè)頁(yè)面Page.DataBind()也就是對所得控件都調用DataBind()方法,在這種情況下不管是服務(wù)器控件還是客戶(hù)端控件都會(huì )綁定)
特別注意:只有服務(wù)器控件才能用<%#%>語(yǔ)法(不準確的)
2007-1-25修改于:當整個(gè)頁(yè)面調用this.DataBinder()方法時(shí),不管是服務(wù)器控件還是客戶(hù)端控件都會(huì )綁定
<div>
Server Control:<asp:TextBox ID="TextBox1" runat="server" Text="<%#text%>"></asp:TextBox><br /><!--Server Control-->
Client Control:<input type="text" id="textbox2" value="<%#text%>" /><!--Client Control-->
</div>
aspx.cs代碼如下:
protected string text;//注意這里必須申明為public或protected,否則aspx頁(yè)面(子類(lèi))無(wú)法訪(fǎng)問(wèn)
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.text = "aaaaaaaaaaaaa";
this.TextBox1.DataBind();//或this.DataBind();
}
}
當this.TextBox1.DataBind() 運行顯示出來(lái)的效果
this.DataBind() 運行顯示出來(lái)的效果
三. <%=%>
這種形式實(shí)際上是由<%%>擴展而來(lái)的.等價(jià)于:Response.Write(<%%>)這種形式(不標準,但能看明白),它其實(shí)也可以看成是一種綁定.
aspx代碼:
<label id="label1"><%=DisplayStr()%></label><br />
<label id="label2" runat="server"><%=DisplayStr()%></label>
aspx.cs代碼:
public string DisplayStr()//注意這里必須要有返回值,否則將會(huì )發(fā)生運行時(shí)錯誤
{
return "bbbb";
}
運行效果:
四.<%$%>
這種形式主要用于對web.config文件的鍵值對進(jìn)行綁定:通常用于連接數據庫的字符串
特別注意:1.綁定的只能是服務(wù)器控件
2.只能綁定到服務(wù)器控件的某個(gè)屬性上。
<asp:TextBox runat="server" ID="cc" Text="<%$ConnectionStrings:pubs%>"></asp:TextBox>
web.config文件如下:
<connectionStrings>
<add name="pubs" connectionString="Server=.;database=pubs;uid=sa;pwd=" providerName="System.Data.SqlClient"/>
</connectionStrings>
這樣就能正常運行。
如果修改aspx中的文件:使用客戶(hù)端的控件
<input type="text" value="<%$ConnectionStrings:pubs%>"/>
或者:不綁定到服務(wù)器控件的某個(gè)屬性上
<asp:TextBox runat="server" ID="cc"><%$ConnectionStrings:pubs%></asp:TextBox>
運行都會(huì )出現相同的錯誤
最后注意一點(diǎn):
<%#%>只針對的是服務(wù)器控件的數據綁定,因此不能同<%=%>和<%%>混合使用
2008-1-25補充:
針對:<%=%>形式:
另外一種情況:
aspx代碼:
<input type="text" id="a" value=<%=DisplayStr()%> />
<input id="Text1" type="text" runat="server" value=<%=DisplayStr()%> />
aspx.cs代碼:
public string DisplayStr()//注意這里必須要有返回值,否則將會(huì )發(fā)生運行時(shí)錯誤
{
return "bbbb";
}
如果是這樣的情況的話(huà),就出現運行時(shí)錯誤。
最后對這種<%=%>用法強調一句:盡量對客戶(hù)端控件用這種形式,畢竟它是asp常用語(yǔ)法,不會(huì )出現問(wèn)題。
但是對于asp.net的服務(wù)器控件就可能不能完全適合的。