asp.net中关于《%=》《%#》《%》 的用法——(转帖)
2015-08-12 11:12
633 查看
1:在.aspx页面,<% %>标签相当于在.cs页面的代码,也就是说你在.cs文件里面怎样写,就可以在.aspx文件里面的<% %>标签里面怎样写。
2:在.aspx页面,<%= %>标签可以调用你的后台的变量或者方法等,不过被调用的方法必须是public的。等同于 <% Response.Write () %> 用于输出一个值
如果你的Default.cs文件里面有:
public string str = "调用后台方法!";
public string GetStr()
{
return "调用后台方法!";
}
那么你的Default.aspx文件里面就可以这样写:
<asp:Label ID="Label2" runat="server" Text='<%=str%>'></asp:Label>
<asp:Label ID="Label1" runat="server" Text='<%= GetStr() %>'></asp:Label>
3:<%#Eval() %>与<%#Bind() %>,这两者的使用方法非常相似,目前我只发现一点区别:
Eval()用于单向绑定,通常将数据值在页面上显示,而不需要执行更新的操作。
而Bind()属于双向绑定,配合一些编辑控件使用,提交后会将新值提交到服务器中。
相同点:
1,两者都是绑定数据源的方法,比如说你想将数据库中的某个字段绑定到页面上的某个Label上,就有代码:
<asp:Label ID="Label1" runat="server" Text='<%#Eval("pSex") %>'></asp:Label>或者
<asp:Label ID="Label1" runat="server" Text='<%#Bind("pSex") %>'></asp:Label>此时两者的效果是一样的。
不同点:
1:如果在绑定数据的同时还要调用后台(.cs文件)的方法,举个例子,需要绑到页面上的字段数据太长,所以必须截断,此时可以调用后台的方法来实现,例子部分代码:
.cs文件:
//字符太长将截断,用“···”代替。
public string Replace(string str)
{
if (str.Length > 20)
{
str = str.Substring(0, 10) + "···";
}
return str;
}
.aspx文件:
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Replace(Eval("pPassWord").ToString()) %></asp:TextBox>
注意,此时只能用Eval方法,因为Eval方法调用了.ToString()方法,而Bind却不能调用此方法。。。
四.<%$ %>
这种形式主要用于对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%>"/>
2:在.aspx页面,<%= %>标签可以调用你的后台的变量或者方法等,不过被调用的方法必须是public的。等同于 <% Response.Write () %> 用于输出一个值
如果你的Default.cs文件里面有:
public string str = "调用后台方法!";
public string GetStr()
{
return "调用后台方法!";
}
那么你的Default.aspx文件里面就可以这样写:
<asp:Label ID="Label2" runat="server" Text='<%=str%>'></asp:Label>
<asp:Label ID="Label1" runat="server" Text='<%= GetStr() %>'></asp:Label>
3:<%#Eval() %>与<%#Bind() %>,这两者的使用方法非常相似,目前我只发现一点区别:
Eval()用于单向绑定,通常将数据值在页面上显示,而不需要执行更新的操作。
而Bind()属于双向绑定,配合一些编辑控件使用,提交后会将新值提交到服务器中。
相同点:
1,两者都是绑定数据源的方法,比如说你想将数据库中的某个字段绑定到页面上的某个Label上,就有代码:
<asp:Label ID="Label1" runat="server" Text='<%#Eval("pSex") %>'></asp:Label>或者
<asp:Label ID="Label1" runat="server" Text='<%#Bind("pSex") %>'></asp:Label>此时两者的效果是一样的。
不同点:
1:如果在绑定数据的同时还要调用后台(.cs文件)的方法,举个例子,需要绑到页面上的字段数据太长,所以必须截断,此时可以调用后台的方法来实现,例子部分代码:
.cs文件:
//字符太长将截断,用“···”代替。
public string Replace(string str)
{
if (str.Length > 20)
{
str = str.Substring(0, 10) + "···";
}
return str;
}
.aspx文件:
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Replace(Eval("pPassWord").ToString()) %></asp:TextBox>
注意,此时只能用Eval方法,因为Eval方法调用了.ToString()方法,而Bind却不能调用此方法。。。
四.<%$ %>
这种形式主要用于对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.net web.config system.web
- DevExpress v15.1:ASP.NET WebForms功能增强(三)
- asp Win7 IIS7.5配置 ASP
- Asp.Mvc 2.0实现用户登录与注销功能实例讲解
- Asp.Mvc 2.0用户客户端验证实例讲解
- asp.net页面过滤所有换行符和多余空格
- AspNetPager在有些网页的地方显示的是换行的
- 使用MetaSploit在WinXP对Win2000进行攻击
- asp.net 中 linkbutton 点击下载文件
- ASP.NET_MVC使用Spring.Net.MVC依赖注入学习笔记
- ASP.NETMVCView页面内判断是否登录
- ASP.NET_MVC4_使用ViewModel给前台传递多个model
- 如何制作一个ASP.NETMVC4信息发布网站
- ASP.NET 页面禁止被 iframe 框架引用
- VS EF Error: Configuration Error extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider"
- android--asp.net webservice 返回json
- ASP如何计算中英文混合字符串长度和截取字符串 .
- 用Metasploit破解Mysql用户名和密码
- asp.net 父窗体获取子窗体的返回值,可用来对父窗体局部更新
- ASP.NET验证码(3种)