gpt4 book ai didi

asp.net - 在 aspx 中的 <%# %> 标签内可以访问哪些其他对象?

转载 作者:行者123 更新时间:2023-12-04 22:17:45 25 4
gpt4 key购买 nike

我在 aspx 页面中一直遇到类似这样的代码:

<asp:CheckBox Runat="server" ID="myid" Checked='<%# DataBinder.Eval(Container.DataItem, "column").Equals(1) %>'>

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

最佳答案

在 <%# %> 标签内,您可以访问

  • 在您的代码隐藏类中可见的任何内容(包括 protected 方法和属性)。
  • 使用 <@import @> 在 aspx 页面上声明的任何内容。
  • 触发 ItemDataBound 事件时作为事件参数传入的任何内容(例如,RepeaterItemEventArgs、DataListItemEventArgs 等)。

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

    DataBinder 也可以通过使用 System.Web.UI.DataBinder 在后面的代码中访问。

    附带说明一下,强制转换 Container.DataItem 优于使用 Eval。 Eval 使用反射,所以有一个开销。在 VB.NET 中,它类似于
    <%#DirectCast(Container.DataItem, DataRow)("some_column")%>

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

    关于asp.net - 在 aspx 中的 <%# %> 标签内可以访问哪些其他对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185521/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com