asp.net中&lt%%&gt形式的用法(原創)

來源:互聯網
上載者:User

      今天第一天開通了部落格,心情樂滋滋的,因為可以和園子裡的朋友一起研究技術了。我希望把平時在項目中積累的知識以及自己學習的知識同園子裡的朋友分享分享。為我們園子的壯大付出自己的一點努力。這是我發表的第二篇話題,希望對這<%%>文法不熟悉的朋友提供協助,對已經熟悉的朋友,希望能提出你們寶貴的意見。
在asp.net中經常出現包含這種形式<%%>的html代碼,我這裡特別收集了,總的來說包含下面這樣幾種格式:
一.  <%%>
這種格式實際上就是和asp的用法一樣的,只是asp中裡面是vbscript或者javascript代碼,而在asp.net中是.net平台下支援的語言。
特別注意:伺服器控制項中不能有<%%>文法
(這裡我用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代碼如下:

  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()  運行顯示出來的效果

this.DataBind() 運行顯示出來的效果

三.  <%=%>
這種形式實際上是由<%%>擴充而來的.等價於:Response.Write(<%%>)這種形式(不標準,但能看明白),它其實也可以看成是一種綁定.
aspx代碼:

  <label id="label1"><%=DisplayStr()%></label><br />
  <label id="label2" runat="server"><%=DisplayStr()%></label>

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>

運行都會出現相同的錯誤

最後注意一點:
<%#%>只針對的是伺服器控制項的資料繫結,因此不能同<%=%>和<%%>混合使用

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()//注意這裡必須要有傳回值,否則將會發生執行階段錯誤
        {
            return "bbbb";
        }

如果是這樣的情況的話,就出現執行階段錯誤。

最後對這種<%=%>用法強調一句:盡量對用戶端控制項用這種形式,畢竟它是asp常用文法,不會出現問題。
但是對於asp.net的伺服器控制項就可能不能完全適合的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.