一. <%%>文法
<%%>這種格式實際上就是和asp的用法一樣的,只是asp中裡面是vbscript或者javascript代碼,而在asp.net中是.net平台下支援的語言。特別注意:伺服器控制項中不能有<%%><%%>文法,例:
<%
int a = 2;
int b = 3;
int c = a + b;
Response.Write(c);
%>
<% int a = 2; int b = 3; int c = a + b; Response.Write(c); %>
二.<%#%>文法
<%#%>如果是這種格式的話那就是asp.net下特有的,它是控制項資料繫結的文法,且必須要調用該控制項的DataBind()方法才執行(或者整個頁面 Page.DataBind()也就是對所得控制項都調用DataBind()方法,在這種情況下不管是伺服器控制項還是用戶端控制項都會綁定) 特別注意:只有伺服器控制項才能用<%#%><%#%>文法(不準確的)
當整個頁面調用this.DataBinder()方法時,不管是伺服器控制項還是用戶端控制項都會綁定
<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頁面(子類)無法訪問
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.text = "aaaaaaaaaaaaa";
this.TextBox1.DataBind();//或this.DataBind();
}
}
三.<%=%>
<%=%>這種形式實際上是由<%%>擴充而來的.等價於:Response.Write(<%%>)這種形式(不標準,但能看明白),它其實也可以看成是一種綁定.
aspx代碼: <%=DisplayStr()%>
<%=DisplayStr()%>
aspx.cs代碼:
public string DisplayStr()//注意這裡必須要有傳回值,否則將會發生執行階段錯誤
{
return "bbbb";
}
四.<%$%>
這種形式主要用於對web.config檔案的索引值對進行綁定:通常用於串連資料庫的字串.
特別注意:
1.綁定的只能是伺服器控制項
2.只能綁定到伺服器控制項的某個屬性上。
<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中的檔案:使用用戶端的控制項<input type="text" value="<%$ConnectionStrings:pubs%>"/> 或者:不綁定到伺服器控制項的某個 屬性上 <asp:TextBox runat="server" ID="cc"><%$ConnectionStrings:pubs%></asp:TextBox>運行都會出現相同的錯誤.
最後注意一點: <%#%>只針對的是伺服器控制項的資料繫結,因此不能同<%=%>和<%%>混合使用
針對:<%=%>形式:
另外一種情況:
aspx代碼: <input type="text" id="a" value=<%=DisplayStr()%> />
<input id="Text1" type="text" runat="server" value=<%=DisplayStr()%> />
aspx.cs代碼:
public string DisplayStr()//注意這裡必須要有傳回值,否則將會發生執行階段錯誤
{
return "bbbb";
}
如果是這樣的情況的話,就出現執行階段錯誤。
最後對這種<%=%>用法強調一句:盡量對用戶端控制項用這種形式,畢竟它是asp常用文法,不會出現問題。
但是對於asp.net的伺服器控制項就可能不能完全適合的。