当前位置:  开发笔记 > 编程语言 > 正文

在aspx中的<%#%>标记内可以访问哪些其他对象?

如何解决《在aspx中的<%#%>标记内可以访问哪些其他对象?》经验,为你挑选了1个好方法。

我在aspx页面中遇到类似的代码:


我想知道我在<%#%>标签内有哪些其他对象可以访问.为什么DataBinder.Eval()和Container.DataItem在.CS代码中的任何地方都不可见?



1> Fung..:

在您有权访问的<%#%>标记内

    代码隐藏类中可见的任何内容(包括受保护的方法和属性).

    使用<@import @>在aspx页面上声明的任何内容.

    触发ItemDataBound事件时作为事件参数传入的任何内容(例如RepeaterItemEventArgs,DataListItemEventArgs等).

Container实际上是RepeaterItemEventArgs.Item,DataListItemEventArgs.Item等的包装器.因此,您实际上可以在ItemDataBound事件中的代码中以e.Item(通常是事件参数参数名称)访问它.

使用System.Web.UI.DataBinder也可以在代码后面访问DataBinder.

另外,使用Eval优先选择转换Container.DataItem.Eval使用反射,因此有一个开销.在VB.NET中它会是这样的

<%#DirectCast(Container.DataItem, DataRow)("some_column")%>

或C#

<%#((DataRow)Container.DataItem)["some_column"].ToString()%>

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有