C# Eval在asp.net中的用法及作用
Eval( ” “)和Bind( ” “) 这两种一个单向绑定,一个双向绑定,bind是双向绑定,但需数据源支持 
ASP.NET   2.0改善了模板中的数据绑定操作,把v1.x中的数据绑定语法DataBinder.Eval(Container.DataItem,   fieldname)简化为Eval(fieldname)。Eval方法与DataBinder.Eval一样可以接受一个可选的格式化字符串参数。缩 短的Eval语法与DataBinder.Eval的不同点在于,Eval会根据最近的容器对象(例如DataListItem)的DataItem属性 来自动地解析字段,而DataBinder.Eval需要使用参数来指定容器。由于这个原因,Eval只能在数据绑定控件的模板中使用,而不能用于 Page(页面)层。当然,ASP.NET   2.0页面中仍然支持DataBinder.Eval,你可以在不支持简化的Eval语法的环境中使用它。  
下面的例子演示了如何使用新的简化的Eval数据绑定语法绑定到DataList数据项模板(ItemTemplate)中的Image、Label和HyperLink控件。
<asp:DataList ID="DataList1 " RepeatColumns="5 " Width="600 " runat="server " DataSourceID="ObjectDataSource1 ">
            <ItemTemplate>
                <asp:HyperLink ID="HyperLink1 " runat="server " NavigateUrl='<%#   Eval( "PhotoID ",   "PhotoFormViewPlain.aspx?ID={0} ")%>'>
            <asp:Image   ID= "Image1 "   Runat= "server "   ImageUrl= <%#   Eval( "FileName ",   "images/thumbs/{0} ")%>/></asp:HyperLink>
                <asp:Label ID="CaptionLabel " runat="server " Text='<%#   Eval( "Caption ")   %>' />
            </ItemTemplate>
        </asp:DataList><br />
        <asp:ObjectDataSource ID="ObjectDataSource1 " runat="server " TypeName="DataComponentTableAdapters.PhotosTableAdapter "
            SelectMethod="GetPhotosForAlbum ">数据绑定也可以作为控件的主题定义(theme definition)的一部分,这样我们就可以通过改变主题来随意地改变模板化控件的布局和外观。但是Theme(主题)模板中只能使用Eval(或者 后面讨论的Bind)。绑定到任意的用户代码是被禁止的。
1.DataBinder.Eval用法 
//显示二位小数
<ItemTemplate>
    <asp:Image Width="12" Height="12" Border="0" runat="server"
           AlternateText='<%# DataBinder.Eval(Container.DataItem, 
"Discontinued", "{0:G}") %>'
           ImageUrl='<%# DataBinder.Eval(Container.DataItem, 
"Discontinued", "~/images/{0:G}.gif") %>' />
</ItemTemplate>//转换类型 
 ((string)DataBinder.Eval(Container, “DataItem.P_SHIP_TIME_SBM8”)).Substring(4,4)
{0:d} 日期只显示年月日 
{0:yyyy-mm-dd} 按格式显示年月日 
{0:c} 货币样式
2.Container.DataItem用法.  
在绑定数据时经常会用到这个句程序:<%# DataBinder.Eval
(Container.DataItem,”xxxx”)%>或者<%# DataBinder.Eval
(Container,”DataItem.xxxx”)%>
还有一种,而且微软也说这种方法的效率要比以上两种高。
<form id="form1" runat="server">
    <div>
     <%#Eval("数据绑定表达式1")%>
     <%#Eval("数据绑定表达式2")%>
    </div>
</form>同样遵循”一”的注意条款。 
如果此时的数据绑定表达式是Eval(“数据库中某个表的某个字段”)等,那么必须把 <%#Eval(“数据绑定表达式1”)%>   <%#Eval(“数据绑定表达式2”)%>  放在像Repeater,DataList,GridView这样的控件的模板中。
三,可以将数据绑定表达式包含在Javascript代码中,从而实现在Javascript中调用C#或者VB.NET的方法。例如:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script language ="javascript" type="text/javascript">
    function GetStr()
    {
       var a;
       a = '';
       a='<%#CSharpToJavascript()%>'         //调用c#的方法
       alert(a);
    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input id="Button1" type="button" value="Javascript调用c#的方法!" onclick="GetStr()" /</div>
    </form>
</body>
</html>using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Page.DataBind();//方法有返回值的要先绑定,才能实现Javascript调用c#的方法!
    }
    public string CSharpToJavascript()
    {
        return "Javascript调用c#的方法!";
    }
}
数据绑定表达式都可以是什么类型呢? 
1,可以是一个变量 
例如:”> 
2,可以是服务器控件的属性值 
例如:
C# Eval在asp.net中的用法及作用的更多相关文章
- [转]C# Eval在asp.net中的用法及作用
		原文链接:http://www.cnblogs.com/Mr_JinRui/archive/2010/07/06/1772129.html Eval( " ")和Bind( &qu ... 
- C# Eval在aspx页面中的用法及作用
		Eval( " ")和Bind( " ") 这两种一个单向绑定,一个双向绑定,bind是双向绑定,但需数据源支持 ASP.NET 2.0改善了模板中的数据绑定操 ... 
- 【转载】Asp.Net中Cookie对象的作用以及常见属性
		Cookie对象是服务器为用户访问存储的特定信息,这些信息一般存储在浏览器中,服务器可以从提交的数据中获取到相应的Cookie信息,Cookie的最大用途在于服务器对用户身份的确认,即票据认证,用户会 ... 
- asp.net中application,cookies,stateview,session的使用
		Cookie Cookie的用法也和ASP中差不多.比如我们建立一个名为aspcn,值为飞刀的cookie HttpCookie cookie = new HttpCookie["aspcn ... 
- ASP.NET中EVAL用法大全
		<%# Bind("Subject") %> //绑定字段<%# Container.DataItemIndex + 1%> //实现自动编号<%# ... 
- asp.net中的<%%>   <%#%>  <%=%>形式的详细用法  (转载)
		博客分类: ASP.NET 一. <%%>这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscript或者javascript代码,而在asp.net中是.net平台下支 ... 
- 【转】asp.net中利用session对象传递、共享数据[session用法]
		来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值 ... 
- asp.net中Repeater控件用法笔记
		大家可能都对datagrid比较熟悉,但是如果在数据量大的时候,我们就得考虑使用 repeater作为我们的数据绑定控件了.Repeater控件与DataGrid (以及DataList)控件的主要区 ... 
- asp.net中的<%%>的几种形式的用法
		转自:http://blog.csdn.net/wang379275614/article/details/9625911 在asp.net中经常出现包含这种形式<%%>的html代码,总 ... 
随机推荐
- Ceph Newstore存储引擎介绍
			在Ceph被越来越多地应用于各项存储业务过程中,其性能及调优策略也成为用户密切关注讨论的话题,影响性能表现关键因素之一即OSD存储引擎实现:Ceph基础组件RADOS是强一致.对象存储系统,其OSD底 ... 
- Android进阶——声波振幅显示
			最近博主想做一个app,中间有一个是录音的功能.于是博主想把UI做的好看一些,想仿照微信或者QQ语音输入时,能够随着声音的大小显示声波振幅.于是查找了一些资料,现在把这个功能的Demo分享给大家,以后 ... 
- php正则贪婪匹配与非贪婪匹配一些例子
			http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交 ... 
- ### 学习《C++ Primer》- 6
			Part 6: 拷贝控制(第13章) // @author: gr // @date: 2015-01-08 // @email: forgerui@gmail.com 一.拷贝.赋值与销毁 拷贝构造 ... 
- hibernate案例 测试代码
			测试staff数据表连接到maeclipse 在staff中插入一行 package com.hibernate.test; import org.hibernate.Session; import ... 
- MySQL二进制文件规范安装
			演示环境介绍 操作系统:CentOS 6.7 (64位) 二进制包:mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz MySQL 下载地址:http://dev.m ... 
- JQuery(三) Ajax相关
			JQuery大大简化了Ajax通用操作,开发者只需要指定请求URL,回调函数即可. 三个主要方法: $().param(obj):将obj参数(对象或数组)转化成查询字符串. {name:" ... 
- 控制 WAP 网站上输入框的默认类型
			比如手机号,卡输入框应该默认显示数字键盘,邮箱输入框应该默认显示邮箱键盘.www . c s d n 1 2 3 . com/html/itweb/20130802/36036_36043_36004 ... 
- MySQL之count(*)与count(id)效率比较(转)
			优化总结: 1.任何情况下SELECT COUNT(*) FROM tablename是最优选择: 2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ’ ... 
- node.js里的forEach()也是异步的吗?
			博客已经迁移到www.imyzf.com,本站不再更新,请谅解! node里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码很可能比回调函数中的代码后先执行,特别是数据库操作.当然,node ... 
