在asp.net中经常出现包含这种形式
<%%>的html代码,我这里特别收集了,总的来说包含下面这样几种格式:
一. <%%>
这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscript或者javascript代码,而在asp.net中是.net平台下支持的语言。
特别注意:服务器控件中不能有<%%>语法
(这里我用C#代码)
如果是这种格式的话那就是asp.net下特有的,它是控件数据绑定的语法,且必须要调用该控件的DataBind()方法才执行(或者整个页面Page.DataBind()也就是对所得控件都调用DataBind()方法,在这种情况下不管是服务器控件还是客户端控件都会绑定)
特别注意:只有服务器控件才能用<%#%>语法(不准确的)
2007-1-25修改于:当整个页面调用this.DataBinder()方法时,不管是服务器控件还是客户端控件都会绑定
this.DataBind() 运行显示出来的效果
三. <%=%>
这种形式实际上是由<%%>扩展而来的.等价于:Response.Write(<%%>)这种形式(不标准,但能看明白),它其实也可以看成是一种绑定.
aspx代码:
四.<%$%>
这种形式主要用于对web.config文件的键值对进行绑定:通常用于连接数据库的字符串
特别注意:1.绑定的只能是服务器控件
2.只能绑定到服务器控件的某个属性上。
如果修改aspx中的文件:使用客户端的控件
运行都会出现相同的错误
最后注意一点:
<%#%>只针对的是服务器控件的数据绑定,因此不能同<%=%>和<%%>混合使用
2008-1-25补充:
针对:<%=%>形式:
另外一种情况:
aspx代码:
最后对这种<%=%>用法强调一句:尽量对客户端控件用这种形式,毕竟它是asp常用语法,不会出现问题。
但是对于asp.net的服务器控件就可能不能完全适合的。
一. <%%>
这种格式实际上就是和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的服务器控件就可能不能完全适合的。