代码之家  ›  专栏  ›  技术社区  ›  Tomas Vana

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

  •  1
  • Tomas Vana  · 技术社区  · 14 年前

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

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

    我想对包含一些常量的类执行类似的操作,比如

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

    但这似乎不起作用,它只是将文本设置为 准确的 表达式而不计算它。我正在使用ASP.NET 3.5 btw。

    我尝试过数据绑定方法,但我得到一个httpParseException说

    数据绑定表达式仅 在具有 数据绑定事件。

    4 回复  |  直到 14 年前
        1
  •  3
  •   scherand    14 年前

    本文: The CodeExpressionBuilder 可能很有趣/有用(尽管是为ASP.NET 2.0编写的)。

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

        2
  •  2
  •   Juri    14 年前

    您的代码应该如下所示:

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

    您还需要对该控件调用数据绑定,如下所示:

    lblMyStringConstant.DataBind();
    

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

        3
  •  1
  •   CRice    14 年前
    <asp:Label ID="lbl" Text="<%# SomeText %>" runat="server" />
    

    然后调用lbl.databind();或databind标签的某个容器。

        4
  •  0
  •   Juri    14 年前

    如果你有这样的功能,它实际上应该可以工作:

    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定义中为类提供完全限定的命名空间。至少在其他情况下它对我不起作用。