asp.net中的<%%>的几种形式的用法

本文深入探讨了ASP.NET中三种特殊HTML语法格式的应用场景及原理,包括服务端脚本、控件数据绑定和绑定的实现方式,并通过实例展示了如何在ASP.NET页面中使用这些语法进行服务器端代码的执行与数据绑定。

在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式:
一. <%%>为服务端脚本,类似于<script runat="server">,都可以在在asp.net页面的aspx文件中插入代码片段
这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscript或者javascript代码,而在asp.net中是.net平台下支持的语言。
特别注意:服务器控件中不能有<%%>语法
(这里我用C#代码)

<%
inta=2;
intb=3;
intc=a+b;
Response.Write(c);
%>
二.<%#%>
如果是这种格式的话那就是asp.net下特有的,它是控件数据绑定的语法,且必须要调用该控件的DataBind()方法才执行(或者整个页面Page.DataBind()也就是对所得控件都调用DataBind()方法,在这种情况下不管是服务器控件还是客户端控件都会绑定)
特别注意:只有服务器控件才能用<%#%>语法(不准确的)

2007-1-25修改于:当整个页面调用this.DataBinder()方法时,不管是服务器控件还是客户端控件都会绑定

<div>
Server Control:
<asp:TextBoxID="TextBox1"runat="server"Text="<%#text%>"></asp:TextBox><br /><!--ServerControl-->
Client Control:<inputtype="text"id="textbox2"value="<%#text%>"/><!--ClientControl-->
</div>
aspx.cs代码如下:
protectedstringtext;//注意这里必须申明为public或protected,否则aspx页面(子类)无法访问
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!Page.IsPostBack)
{
this.text="aaaaaaaaaaaaa";
this.TextBox1.DataBind();//或this.DataBind();
}

}
当this.TextBox1.DataBind() 运行显示出来的效果

this.DataBind() 运行显示出来的效果

三. <%=%>
这种形式实际上是由<%%>扩展而来的.等价于:Response.Write(<%%>)这种形式(不标准,但能看明白),它其实也可以看成是一种绑定.
aspx代码:
<labelid="label1"><%=DisplayStr()%></label><br/>
<labelid="label2"runat="server"><%=DisplayStr()%></label>
aspx.cs代码:
publicstringDisplayStr()//注意这里必须要有返回值,否则将会发生运行时错误
{
return"bbbb";
}
运行效果:

四.<%$%>
这种形式主要用于对web.config文件的键值对进行绑定:通常用于连接数据库的字符串
特别注意:1.绑定的只能是服务器控件
2.只能绑定到服务器控件的某个属性上。
<asp:TextBoxrunat="server"ID="cc"Text="<%$ConnectionStrings:pubs%>"></asp:TextBox>
web.config文件如下:
<connectionStrings>
<addname="pubs"connectionString="Server=.;database=pubs;uid=sa;pwd="providerName="System.Data.SqlClient"/>
</connectionStrings>
这样就能正常运行。
如果修改aspx中的文件:使用客户端的控件
<inputtype="text"value="<%$ConnectionStrings:pubs%>"/>
或者:不绑定到服务器控件的某个属性上
<asp:TextBoxrunat="server"ID="cc"><%$ConnectionStrings:pubs%></asp:TextBox>

运行都会出现相同的错误



最后注意一点:
<%#%>只针对的是服务器控件的数据绑定,因此不能同<%=%>和<%%>混合使用


2008-1-25补充:
针对:<%=%>形式:
另外一种情况:
aspx代码:
<inputtype="text"id="a"value=<%=DisplayStr()%>/>
<inputid="Text1"type="text"runat="server"value=<%=DisplayStr()%>/>
aspx.cs代码:
publicstringDisplayStr()//注意这里必须要有返回值,否则将会发生运行时错误
{
return"bbbb";
}
如果是这样的情况的话,就出现运行时错误。


最后对这种<%=%>用法强调一句:尽量对客户端控件用这种形式,毕竟它是asp常用语法,不会出现问题。
但是对于asp.net的服务器控件就可能不能完全适合的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值