c# .net 中<% = %>,<% # %>,<% $ %>意义
2013-06-24 11:14
239 查看
在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()方法,在这种情况下不管是服务器控件还是客户端控件都会绑定) 特别注意:只有服务器控件才能用<%#%>语法(不准确的) 当整个页面调用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> 运行都会出现相同的错误 最后注意一点: <%#%>只针对的是服务器控件的数据绑定,因此不能同<%=%>和<%%>混合使用 补充: 针对:<%=%>形式: 另外一种情况: 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的服务器控件就可能不能完全适合的。
相关文章推荐
- asp.net/c# 用<input type="file" />实现文件上传,multipart/form-data
- NET(C#):线程本地存储(Thread-Local Storage)之ThreadStatic, LocalDataStoreSlot和ThreadLocal<T>
- C#.Net:List<T>集合列表的Linq语句查询示例
- C# ASP.NET调试问题<compilation debug="false" targetFramework="4.0"/>
- .NET/C#中对对象集合进行查询的方法 以及相关的 Predicate<T> 及 Action<T> 的用法
- 如何使用<Beginning ASP.NET 3.5 in C# and VB>书中的示例代码
- 在C#.NET中,关于<%%>使用方法
- ASP.NET&C#学习笔录4(<authentication mode="Windows|Forms|Passport|None"> )
- Note on <C# 3.0 UNLEASHED With the .NET Framework 3.5> - 01
- JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List<T>转JSON,JSON转List<T>,JSON转C#对象
- Note on <C# 3.0 UNLEASHED With the .NET Framework 3.5> - 02
- <From C++ To C#> 再来说说.NET Framework的跨语言性
- c# List<T>与ObservableCollection<T>
- java.net.BindException: Address already in use: JVM_Bind <null>:8001解决办法
- Nullable Modifier--from <Essential c# 2.0>
- C#中List<T>对象的深度拷贝问题
- C#基础学习日志===&gt;数组&lt;===
- C# List<>简单用法
- c# 中 EventHandler<TEventArgs>的 异步调用
- asp.net的<% %>总结