今天在做渭南电脑维修网的一个小功能时遇到了一些问题,因此特别列出,以备他日之用。

首先对ASP.NET 内联代码、内联表达式、数据绑定表达式的概念进行罗列,详细概念以及基本的用法我就不在这里罗嗦了,请参照MSDN详细介绍,以下是列表:

1、<% inline code %>:内联代码

2、<%=inline expression %>:内联表达式

3、<%# data-binding expression %>:数据绑定表达式

内联代码我很少使用,所以也没什么心得可以拿来与大家分享,内联表达式、数据绑定表达式是我日常工作中必备之利器。

园子里一篇文章写的不错,在这里给大家推荐一下:《ASP.NET前台代码绑定后台变量方法总结

基本用例展示:

//后台代码
public string name;
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();//显示绑定数据,数据绑定表达式获值先天条件
}
//前台代码 不管是内联表达式还是数据绑定表达式都能获取name的值
<%= name %>
<%# name %>//通过数据绑定表达式获值时别忘记在后台调用Page.DataBind() 否则<%# name %>获取的值将为空
看看下边的代码你看出什么问题了吗?
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:HyperLink ID="linkID" runat="server" CssClass="<%#Eval("CSS") %>" NavigateUrl='javascript:MethodName(<%# Eval("ID") %>)'>[关注]</asp:HyperLink> </ItemTemplate>
</asp:Repeater>

正确写法:

<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate> //服务器标记的格式不正确。 属性使用双引号调用数据绑定表达式报错,改为单引号即可解决问题
    <asp:HyperLink ID="linkID" runat="server" CssClass='<%#Eval("CSS") %>' NavigateUrl='<%# "javascript:MethodName("+Eval("ID")+");"%>'>[关注]</asp:HyperLink> //对于NavigateUrl属性对执行的javascript方法进行动态参数赋值时,前边错误的写法根本获取不到其实际的值,实际输出居然是"javascript:MethodName(<%# Eval("ID") %>)"与我们要的结果截然不同,通过《ASP.NET HyperLink Eval in a Javascript function》学到了老外的精髓,使用变相思维,我们直接通过数据绑定表达式进行字符串的拼接,这样就得到了我们预期的效果。
     </ItemTemplate> 
</asp:Repeater>
内联表达式<%= %>和数据绑定表达式<%# %>的区别。

1、在后台代码中,数据绑定表达式内联表达式唯一不同的,就是需要调用DataBind方法。只有执行了相应控件的DataBind方法,前台代码中这些控件中使用<%# %>的绑定才会发生(并且控件内部的所有绑定也会发生,比如又嵌套了一个绑定后台数据的控件),否则得话将不会被赋值,而是默认空值。上面我们用的 是Page的DataBind方法,那么整个页面所有绑定都会执行。当然,如果我们只执行DataList1或者DropDownList1的 DataBind方法,那么只有相应控件的绑定才会发生。需要注意的是,这里说的需要执行DataBind包括了显示和隐式执行,有些数据绑定类控件,当 它们通过 DataSourceID 属性绑定到数据源控件时,会通过隐式调用 DataBind 方法来执行绑定。这时就不必显示的再次调用了。

2、两种绑定方式上,他们的约束基本相同,都要求与属性匹配,出现在他们可以出现的位置。后者的使用位置更广泛,尤其是支持服务器端控件和绑定数据集合。后台代码方面,后者需要调用DataBind才能完成绑定,前者则没有这方面要求。这里主要区别一下两者在执行机制上的区别:<%=...%>是 在程序执行时调用(应该是在页面的RenderControl事件过程中完成的,也就是通常情况下我们可以看到的后台代码都执行完毕后再去到前台代码中进 行赋值绑定),而<%#... %>是在DataBind()方法之后被调用,一旦调用了DataBind(),则它对应的控件将绑定变量,因此,请注意:如果在 DataBind()后再修改变量,那么绑定的就不是最新值了,这就需要在完成变量的赋值后,再去DataBind()。其实这两种方式,它的运行过程可 以在VS中通过设置断点来看看,看两者的绑定赋值分别是在什么时候发生的。

ASP.NET 内联代码、内联表达式、数据绑定表达式使用方法罗列(形式就是常说的尖括号 百分号 等于号 井号)的更多相关文章

  1. 【转载】ASP.NET 内联代码、内联表达式、数据绑定表达式使用方法罗列(形式就是常说的尖括号 百分号 等于号 井号)

    ASP.NET 内联代码.内联表达式.数据绑定表达式使用方法罗列(形式就是常说的尖括号 百分号 等于号 井号) 今天在做渭南电脑维修网的一个小功能时遇到了一些问题,因此特别列出,以备他日之用. 首先对 ...

  2. ASP.NET 尖括号 百分号 井号 等号 的用法

    1.<%=%>  尖括号 百分号 等号 里面放的变量或方法,如: <div> <h1>Hello World</h1> <p><%= ...

  3. iOS开发 使用RMStore简化内购代码 + 内购买订单验证

    现在很多的app里面都添加了应用内购买,网上关于苹果证书的生成和设置的教程比较多,这里就不多赘述了,推荐几个个人觉得说的比较详细的网址: http://www.jianshu.com/p/86ac7d ...

  4. 数据绑定表达式(上):.NET发现之旅(一)

    数据绑定表达式(上):.NET发现之旅(一) 2009-06-30 10:29:06 来源:网络转载 作者:佚名 共有评论(0)条 浏览次数:859 作为.NET平台软件开发者,我们频繁与各种各样的数 ...

  5. <%%>创建内联代码块(表达式)

    其实<%%>很早之前就见过了,只是会用一点功能,其它的不甚了解.今天偶尔见到了它的庐山真面目,现在共享给大家. 语法 代码块呈现(<%%>)定义了当呈现页时执行的内联代码或内联 ...

  6. &lt;%%&gt;创建内联代码块(表达)

    其实<%%>很早之前见过它,将一个小的功能仅.别人不理解.今天偶尔,我们看到它的真面目,今天,给大家分享. 语法 代码块呈现(<%%>)定义了当呈现页时运行的内联代码或内联表达 ...

  7. web兼容学习分析笔记--块级、内联、内联块级元素

    一.块级.内联.内联块级元素 (1)块级元素:block **独占一行 **可设置width,height,margin,padding **内部可包含块级或内联元素 (3)内联(行内)元素:inli ...

  8. iframe框架里镶嵌页面;<marquee>:滚动效果;<mark>做标记;内联、内嵌、外联;选择器

    标签:①②③④⑤⑥⑦★ 框架: 一.frameset:(框架集) 1.如果使用框架集,当前页面不能有body 2.cols="300,*":左右拆分,左边宽300,右边宽剩余 3. ...

  9. 【CSS3】---块状元素、内联元素(又叫行内元素)和内联块状元素

    元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...

随机推荐

  1. 【LeetCode】206. Reverse Linked List 解题报告(Python&C++&java)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 迭代 递归 日期 [LeetCode] 题目地址:h ...

  2. 快速恢复update了的orcale数据表

    在update的时候 没有写条件 将整个表中的数据全部都更新了,这时候怎么办呢? orcale提供了以下的方法产看某一个时间戳, 所执行的sql的语句内容, 同时可以利用该这个时间戳查看当时语句执行显 ...

  3. git导出历史日志

    1.1.在项目根目录下执行命令,导出 git 提交记录到桌面 进入项目目录:然后右击选择git bash here     然后在git中执行命令:git log --pretty=format:&q ...

  4. MySQL定时备份数据库方案

    MySQL数据备份 1.备份全部数据库的数据和结构 mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql 2.备份全部数据库的结构(加 ...

  5. Scalable Rule-Based Representation Learning for Interpretable Classification

    目录 概 主要内容 Wang Z., Zhang W., Liu N. and Wang J. Scalable rule-based representation learning for inte ...

  6. C#WPF数据绑定模板化操作四步走

    前言:WPF数据绑定对于WPF应用程序来说尤为重要,本文将讲述使用MVVM模式进行数据绑定的四步走用法: 具体实例代码如下: 以下代码仅供参考,如有问题请在评论区留言,谢谢 1 第一步:声明一个类用来 ...

  7. Jedis 基本使用

    引入 jedis 依赖: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <!-- Dec 15, 2 ...

  8. idea 创建Maven项目,Enable auto Import报“本地服务器没有从权威服务器上收到响应”

    完整的报错信息:Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to cent ...

  9. [flask] jinja自定义filter来过滤html标签

    问题描述 数据库存储了html格式的博客文章,在主页(index)显示的时候带有html标签,如何过滤掉呢? 解决方案 用jinja自定义filter过滤掉html标签 我是用的工厂函数,因此在工厂函 ...

  10. Linux命令--ss命令的参数及使用详解

    ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信 ...