在我的.aspx页面上,我有一个标签控件,试图将BackColor设置为等于以下方法的输出:

<asp:Label ID="myLabel" runat="server" BackColor='<%# getColor() %>'>hello</asp:Label>


在我的后台代码中,我有以下内容:

public Color getColor()
{
    return System.Drawing.Color.Red;
}


但是,这不起作用。我的标签背景不会根据方法输出更改颜色。

在我的Page_Load部分的代码后面,如果我说:

myLabel.BackColor = getColor();


这可行。那么由于页面加载期间的某种操作顺序,它对我不起作用吗?还是控件内部的语法错误?

我意识到这似乎没有必要,但是我正在努力开发更复杂的基于查询的逻辑功能。只是想让最简单的示例现在就可以工作。

最佳答案

要使其正常工作,您可以使用页面的DataBind方法,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    this.DataBind();
    // or
    Page.DataBind();
    // or
    DataBind();
}


参考文献:


Control.DataBind Method
ASP.NET data binding overview


  确定特定的数据源并为.aspx页上的对象设置后,必须将数据绑定到这些数据源。您可以使用Page.DataBind或Control.DataBind方法将数据绑定到数据源。
  [...]
  在您显式调用Web服务器控件的DataBind方法或调用页面级Page.DataBind方法之前,不会向控件呈现任何数据。通常,从Page_Load事件中调用Page.DataBind(或DataBind)。

08-19 03:58