ASP.NET 前端html代碼中會經常出現的<%%>的代碼,里面的文本其實就是不能直接輸出到客戶端瀏覽器的文本,是需要服務器解釋的。
在ASP中,<%%>里面的文本是vbscript或者javascript代碼,在ASP.NET中,<%%>里面的文本就是.net平台下支持的語言。
具體有三種:<%%>,<%#%>,<%=%>,后兩種主要是用於asp.net前端數據綁定的。
一 、<%=%>
在.aspx頁面,<%= %>標簽可以調用后台.CS的變量/屬性或者方法,不過被調用的變量或方法必須是public的。
例:Default.cs文件里面有:
public string str = "test"; public string ReturnStr() { return "test"; }
那么前端Default.aspx文件里面就可以這樣寫:
<asp:Label ID="Label2" runat="server" Text='<%=str%>'></asp:Label> <asp:Label ID="Label1" runat="server" Text='<%= ReturnStr() %>'></asp:Label>
二、<%#%>
前端aspx頁面中,一幫服務器控件數據綁定的語法,結合Eval()方法綁定數據源(ASP.NET 提供了一個名為 DataBinder.Eval 的靜態方法,該方法計算后期綁定的數據綁定表達式,並將結果格式化為字符串(可選)。利用此方法,可以避免許多在將值強制為所需數據類型時必須執行的顯式強制轉換操作,DataBinder.Eval需要使用參數來指定容器)
例:Repeater控件,在Page_Load()方法中,加載數據:
后台:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { intopage(DropDownListMgrDate.SelectedValue.ToString()); //不會每次刷新頁面都重新綁定數據 } }
private void intopage(string Batchid) { this.Repeater1.DataSource = dmgr.GetCBProduct_MgrList(this.AspPage.CurrentPageIndex, AspPage.PageSize,Batchid);//CurrentPageIndex:當前頁索引值;PageSize:分頁每頁所能容納值 this.Repeater1.DataBind(); }
這里,Repeater1.DataSource的數據源既可以是DataSet,也可以是List,這里是List,對應前端DataBinder.Eval方法的參數是:ColumnName/屬性名稱
前端:
<td> <%#DataBinder.Eval(Container.DataItem, "include_in_quantity")%> </td> <td title="<%#DataBinder.Eval(Container.DataItem, "part_description")%>"> <%#DataBinder.Eval(Container.DataItem, "part_description").ToString().Length>20?DataBinder.Eval(Container.DataItem, "part_description").ToString().Substring(0,20)+"...":DataBinder.Eval(Container.DataItem, "part_description").ToString()%> </td>
這里Eval()綁定數據時結合使用了三元運算符,如果字符長度大於20,就截取+“...”,當鼠標滑到目標處,就會顯示。
其他優秀博客鏈接推薦:
http://blog.csdn.net/lai123wei/article/details/7261701
http://www.cnblogs.com/luckeryin/archive/2012/12/13/2815823.html