ASP.NET %%,%=%,%#%区别
在asp.net中經(jīng)常出現(xiàn)包含這種形式<%%>的html代碼,總的來說包含下面這樣幾種格式:
一.? <%%>
這種格式實際上就是和asp的用法一樣的,只是asp中里面是vbscript或者javascript代碼,而在asp.net中是.net平臺下支持的語言。
特別注意:服務(wù)器控件中不能有<%%>語法
(這里用C#代碼)
? <%
??????? int a = 2;
??????? int b = 3;
??????? int c = a + b;
??????? Response.Write(c);
??? %>二. <%#%>
如 果是這種格式的話那就是asp.net下特有的,它是控件數(shù)據(jù)綁定的語法,且必須要調(diào)用該控件的DataBind()方法才執(zhí)行(或者整個頁面 Page.DataBind()也就是對所得控件都調(diào)用DataBind()方法,在這種情況下不管是服務(wù)器控件還是客戶端控件都會綁定)
特別注意:一般只有服務(wù)器控件才能用<%#%>語法(不準(zhǔn)確的)
當(dāng)整個頁面調(diào)用this.DataBinder()方法時,不管是服務(wù)器控件還是客戶端控件都會綁定
<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();??????????????
??????????? }
??????? }
當(dāng)this.TextBox1.DataBind()? 運行顯示出來的效果(無法插入圖片自己測試)
this.DataBind() 運行顯示出來的效果(無法插入圖片自己測試)
三.? <%=%>
這種形式實際上是由<%%>擴展而來的.等價于:Response.Write(<%%>)這種形式(不標(biāo)準(zhǔn),但能看明白),它其實也可以看成是一種綁定.
aspx代碼:?? <label id="label1"><%=DisplayStr()%></label><br />
? <label id="label2" runat="server"><%=DisplayStr()%></label>aspx.cs代碼:? public string? DisplayStr()//注意這里必須要有返回值,否則將會發(fā)生運行時錯誤
??????? {
??????????? return "bbbb";
??????? }
四.<%$%>
這種形式主要用于對web.config文件的鍵值對進行綁定:通常用于連接數(shù)據(jù)庫的字符串
特別注意:1.綁定的只能是服務(wù)器控件?
???????? 2.只能綁定到服務(wù)器控件的某個屬性上。
<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%>"/>或者:不綁定到服務(wù)器控件的某個屬性上 <asp:TextBox runat="server" ID="cc"><%$ConnectionStrings:pubs%></asp:TextBox>
運行都會出現(xiàn)相同的錯誤
最后注意一點:?
<%#%>只針對的是服務(wù)器控件的數(shù)據(jù)綁定,因此不能同<%=%>和<%%>混合使用
補充:
針對:<%=%>形式:
另外一種情況:
aspx代碼:?????????? <input type="text" id="a"? value=<%=DisplayStr()%> />
????????? <input id="Text1" type="text"? runat="server" value=<%=DisplayStr()%> />aspx.cs代碼:
public string? DisplayStr()//注意這里必須要有返回值,否則將會發(fā)生運行時錯誤
??????? {
??????????? return "bbbb";
??????? }如果是這樣的情況的話,就出現(xiàn)運行時錯誤。最后對這種<%=%>用法強調(diào)一句:盡量對客戶端控件用這種形式,畢竟它是asp常用語法,不會出現(xiàn)問題。
但是對于asp.net的服務(wù)器控件就可能不能完全適合的
轉(zhuǎn)載于:https://www.cnblogs.com/zhouss/p/4937563.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET %%,%=%,%#%区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 栈-迷宫求解路径问题
- 下一篇: (软件工程复习核心重点)第六章实现和测试