试图将BackColor设置为等于asp.net C#webform中方法的返回值

时间:2017-02-17 16:02:21

标签: c# asp.net webforms

在我的.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(); 
这是有效的。因为页面加载期间的某种操作顺序,它不适合我吗?或者我的语法错误在控件内?

我意识到这似乎是不必要的,但我正在努力实现更复杂的基于查询的逻辑功能。试着让最简单的例子立即运作。

1 个答案:

答案 0 :(得分:0)

要使其正常运行,您可以使用网页的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.DataBind(或DataBind)是从Page_Load事件中调用的。