【问题标题】:Inline Data-Binding asp.net tags not executing内联数据绑定 asp.net 标记未执行
【发布时间】:2010-12-17 05:27:18
【问题描述】:

我的问题是我曾经能够做到这一点,

' >

当控件的 DataBind 函数被隐式调用并且 div 的可见性将被正确设置时,将在 Page_Load 中调用 CallAFunctionThatReturnsBoolean()。

现在由于某种原因不再发生这种情况,为了使其工作,我必须在我的基 Page 类中调用 Page.DataBind() 或在该页面的 Page_Load 子中调用 Me.DataBind(),但是我真的不想这样做,尤其是在基 Page 类中,因为如果我有一个页面,假设其中有一个 DataGrid,我已经显式调用了 DataBind() 函数,那么这个 DataGrid 将被绑定两次,一次来自 Page.DateBind 和一次来自显式调用 datagrid.DataBind()。

知道为什么不再隐式调用控件的数据绑定事件吗?

谢谢

【问题讨论】:

    标签: asp.net vb.net data-binding inline-code


    【解决方案1】:

    <%# 发生在数据绑定中,<%= 将始终在页面构建时发生,而不考虑任何数据绑定。听起来这就是您要找的东西?

    数据绑定也是控件级别,因此如果您对网格进行“数据绑定”,它不会对任何其他控件进行数据绑定。调用网格时,即使是嵌入的模板化控件也不会自动进行数据绑定,除非您连线这样做。

    尝试执行以下操作,看看是否可以解决您的问题:

    <div runat="server" visible='<%= CallAFunctionThatReturnsBoolean() ? "true" : "false" %>' >
    

    如果你要求它发生在数据绑定事件中,我更喜欢在服务端实现 OnDataBinding 如下:

    // in your aspx
    <div runat="server" OnDataBinding="yourDiv_DataBinding">
    
    // in your .cs
    protected void yourDiv_DataBinding(object sender, EventArgs e)
    {
        HtmlControl div = (HtmlControl)(sender);
        div.Visible = CallAFunctionThatReturnsBoolean();
    }
    

    【讨论】:

    • 我想我可以让 CallAFunctionThatReturnsBoolean 返回一个字符串,“True”或“False”,但这不起作用。这是我收到的错误消息,Parser Error Message: Cannot create an object of type 'System.Boolean' from its string representation '' for the 'Visible' property。在我看来,它从字面上看,而不是调用函数。对了,'#' 和数据绑定有关,问题是它之前绑定了控件,所以它工作得很好,但它不再工作了。
    • 不,您没有完全复制我的答案...注意? “真”:“假”部分???这需要您的函数返回的值并将其映射到正确的文本。
    • 如果您在我的第二个示例中使用 DataBinding 方法,那么 Visible 标记直接映射到布尔值,因此您不需要转换为字符串 sn-p。
    • 凯尔西,感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2012-03-15
    • 2019-06-02
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    相关资源
    最近更新 更多