【问题标题】:asp.net web forms bind only <%# %>asp.net web 表单仅绑定 <%# %>
【发布时间】:2013-05-03 16:21:36
【问题描述】:

这里有什么方法可以绑定&lt;%# Page.ClientID %&gt;而不绑定Page子控件吗?

例如:

<%# SomePageProprtyThatReturnsString %>
<someTag:SomeControl ID="SomeControlID" runat="server" OnDataBinding="SomeControlID_DataBinding"></someTag:SomeControl>

如果我有以下关注,那么 SomeControlID 将被绑定到每个不需要的回发

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    DataBind();
}

如果我不在每个帖子上绑定页面,那么 SomePageProprtyThatReturnsString 将不会在回发中可见

【问题讨论】:

  • 您能详细说明一下吗?我不太明白问题是什么......您只希望 SomePageProprtyThatReturnsString 被评估一次但一直显示?或者 SomePageProprtyThatReturnsString 应该在您的控件的上下文中?
  • 对不起,也许我没有正确描述我的问题。我们可以使用 这个 。所以我想总是在我的页面上看到“一些字符串”,但 SomeControlID 只有在页面最初加载时才绑定(没有回发)
  • 据我了解 仅在调用 Page.DataBind() 时才进行评估,但如果我调用它,则将调用所有页面子项的 DataBind()。所以我不想每次加载页面时都对 进行评估,但是只有在 !IsPostBack 时才应该绑定子控件
  • 问题是我不知道什么是 以及它是如何工作的,所以我什至无法搜索它。

标签: asp.net data-binding webforms


【解决方案1】:

您可以选择要绑定的控件。所以,如果你有这样的事情:

<asp:Label runat="server" ID="lblSomet Text='<%# SomePageProprtyThatReturnsString %>'/>
<someTag:SomeControl ID="SomeControlID" runat="server" OnDataBinding="SomeControlID_DataBinding"></someTag:SomeControl>

您只能在Label 上拨打Databind

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    lblSomething.DataBind();
}

【讨论】:

  • 感谢您的回答,但这并不是我想知道的。在您的场景中,我可以将 Literal 放在 OnLoad 中并将其设置为 Text 值。或者如果不调用 Page 的 DataBind() 就无法评估页面上 内的代码?
  • @Vladimir 不,没有。但是您可以对父控件进行数据绑定。例如,如果您对 asp:Panel 进行数据绑定,则所有子控件/表达式都已绑定
  • 我不知道你可以DataBind() 其他控件而不是ListViews 或Repeaters - 谢谢!
【解决方案2】:
<%# SomePagePropertyThatReturnsString %>

看起来它可能是您在Page 本身上创建的一些公共财产?如果是这种情况,您可以通过更改代码直接输出该属性而无需数据绑定:

<%= this.Page.SomePropertyThatReturnsString %>

【讨论】:

  • 抱歉耽搁了。这对我来说很好。你能解释一下什么是
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
相关资源
最近更新 更多