在我的.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)。