这可能是一个非常愚蠢的问题,但我似乎无法让它发挥作用。我在很多地方使用以下语法将aspx文件中控件的属性动态绑定到资源条目,例如。
<SomeFunnyControl Text="<%$ Resources : ResClass, ResEntry %>" />
我想对包含一些常量的类做类似的事情,比如
<SomeFunnyControl Text="<%= MyConstantsClass.MyStringConstant %>" />
但这似乎不起作用,它只是将文本设置为精确表达式而不进行评估。我使用的是ASP.NET 3.5 btw。
我尝试过数据绑定方法但是我得到了一个HttpParseException说
数据绑定表达式只是 支持具有。的对象 DataBinding事件。
答案 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定义中为您的类提供完全限定的命名空间。至少在其他方面它对我不起作用。