asp.net中形式的用法(原創)
在asp.net中經常出現包含這種形式<%%>的html程式碼,我這裡特別收集了,總的來說包含下面這樣幾種格式:
一. <%%>
這種格式實際上就是和asp的用法一樣的,只是asp中裡面是vbscript或者javascript程式碼,而在asp.net中是.net平臺下支援的語言。
特別注意:伺服器控制元件中不能有<%%>語法
(這裡我用C#程式碼)
<%
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()方法,在這種情況下不管是伺服器控制元件還是客戶端控制元件都會繫結)
特別注意:只有伺服器控制元件才能用<%#%>語法(不準確的)
2007-1-25修改於:當整個頁面呼叫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程式碼如下:
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>
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();
}
}
當this.TextBox1.DataBind() 執行顯示出來的效果protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.text = "aaaaaaaaaaaaa";
this.TextBox1.DataBind();//或this.DataBind();
}
}
this.DataBind() 執行顯示出來的效果
三. <%=%>
這種形式實際上是由<%%>擴充套件而來的.等價於:Response.Write(<%%>)這種形式(不標準,但能看明白),它其實也可以看成是一種繫結.
aspx程式碼:
<label id="label1"><%=DisplayStr()%></label><br />
<label id="label2" runat="server"><%=DisplayStr()%></label>
aspx.cs程式碼:
<label id="label2" runat="server"><%=DisplayStr()%></label>
public string DisplayStr()//注意這裡必須要有返回值,否則將會發生執行時錯誤
{
return "bbbb";
}
執行效果:{
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>
這樣就能正常執行。<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>
執行都會出現相同的錯誤
最後注意一點:
<%#%>只針對的是伺服器控制元件的資料繫結,因此不能同<%=%>和<%%>混合使用
2008-1-25補充:
針對:<%=%>形式:
另外一種情況:
aspx程式碼:
<input type="text" id="a" value=<%=DisplayStr()%> />
<input id="Text1" type="text" runat="server" value=<%=DisplayStr()%> />
aspx.cs程式碼:<input id="Text1" type="text" runat="server" value=<%=DisplayStr()%> />
public string DisplayStr()//注意這裡必須要有返回值,否則將會發生執行時錯誤
{
return "bbbb";
}
如果是這樣的情況的話,就出現執行時錯誤。{
return "bbbb";
}
最後對這種<%=%>用法強調一句:儘量對客戶端控制元件用這種形式,畢竟它是asp常用語法,不會出現問題。
但是對於asp.net的伺服器控制元件就可能不能完全適合的。
相關文章
- 【原創】SYS_CONTEXT函式的用法Context函式
- Android Notification 用法的4種形式Android
- [原創] Linux 中的 nohup 與 &Linux
- Asp.Net Core中Typed HttpClient高階用法ASP.NETHTTPclient
- asp.net中Page.ClientScript.RegisterStartupScript用法小結ASP.NETclient
- asp.net中關於雙引號和單引號的用法ASP.NET
- React 中的五種元件形式React元件
- Asp.Net MVC HttpPost用法ASP.NETMVCHTTP
- [原創] Mysql中 Desc tables 中MUl解釋MySql
- Oracle中Hint深入理解(原創)Oracle
- 【原創】中華通訊錄 pj教程
- PHP抓取資料的3中形式PHP
- vim高階用法多年經驗原創總結(全部測試成功)
- asp.net中RegularExpressionValidator控制元件中正規表示式用法ASP.NETExpress控制元件
- ASP.net 中Queue,Stack,Hashtable,Sortlist一些簡單用法ASP.NET
- 【原創】autotrace中statistics為0的問題的解決
- 【原創】JAVA中令人眼花撩亂的數字魔法Java
- 【原創】對Rav 2005中HOOK的初步分析Hook
- CPA二十三--分部報告的主要報告形式和次要報告形式的原則(轉載)
- 原創文章檢測工具,檢測原創文章,過不了原創賬號的原因在這
- js中的this用法JS
- SQL 中With as 的用法SQL
- Oracle中with的用法Oracle
- 遊戲原畫教程:角色設計中的幾個基本圖形的用法遊戲
- [原創]解讀天書----漏洞利用中級技巧的分析
- 原創 Rman備份中obsolete和expired的區別
- [原創視訊]PHP在netbeans中的簡單使用PHPBean
- 【原創】MYSQL 的那些“坑”MySql
- javascript 函式中的 this 的四種繫結形式JavaScript函式
- SQLite中SELECT基本形式SQLite
- MYSQL中replace into的用法MySql
- Java中super的用法Java
- mySQL中replace的用法MySql
- iOS 中 cell的用法iOS
- golang中channel的用法Golang
- 【 Oracle中rownum的用法 】Oracle
- Java中DecimalFormat的用法JavaDecimalORM
- MySQL中limit的用法MySqlMIT