如何在aspx文件中以编程方式设置控件的属性?

时间:2010-05-27 07:15:09

标签: c# .net asp.net expression

这可能是一个非常愚蠢的问题,但我似乎无法让它发挥作用。我在很多地方使用以下语法将aspx文件中控件的属性动态绑定到资源条目,例如。

<SomeFunnyControl Text="<%$ Resources : ResClass, ResEntry %>" />

我想对包含一些常量的类做类似的事情,比如

<SomeFunnyControl Text="<%= MyConstantsClass.MyStringConstant %>" />

但这似乎不起作用,它只是将文本设置为精确表达式而不进行评估。我使用的是ASP.NET 3.5 btw。

我尝试过数据绑定方法但是我得到了一个HttpParseException说

  

数据绑定表达式只是   支持具有。的对象   DataBinding事件。

4 个答案:

答案 0 :(得分:3)

本文:The CodeExpressionBuilder可能很有趣/有帮助(虽然是为ASP.NET 2.0编写的)。

似乎可以让你写... Text="<%$ Code: DateTime.Now %>" ...。这可能有所帮助,不是吗?但是,它有相当多的开销。

答案 1 :(得分:2)

您的代码应如下所示:

<asp:Label ID="lblMyStringConstant" runat="server" Text='<%# MyConstantsClass.MyStringConstant %&>'></asp:Label>

您还需要在该控件上调用DataBinding,如下所示:

lblMyStringConstant.DataBind();

(如果您在整个页面或此标签的父容器上调用DataBind,则没有必要,因为它将为其所有子项调用DataBind)

答案 2 :(得分:1)

<asp:Label ID="lbl" Text="<%# SomeText %>" runat="server" />

然后调用lbl.DataBind();或数据绑定标签的一些容器。

答案 3 :(得分:0)

如果您有这样的话,它应该可以正常工作:

public static class MyConstantsClass
{
   public static string MyStringConstant = "Hello World!";
}

或者

public class MyConstantsClass
{
   public const string MyStringConstant = "Hello World!";
}

如果你声明它

<asp:Label ID="Label1" runat="server" Text="<%= MyNamespace.MyConstantsClass.MyStringConstant %>"></asp:Label>

它不起作用,输出将是“<%= MyNamespace.MyConstantsClass.MyStringConstant %>”。

你可以做的就是这样写:

<asp:Label ID="lblTest" runat="server"><%= MyNamespace.MyConstantsClass.MyStringConstant %></asp:Label>

这对我来说非常有用,但请注意,您必须在ASPX定义中为您的类提供完全限定的命名空间。至少在其他方面它对我不起作用。