3

我在代码隐藏中有一个函数,想在 aspx 上使用它。

代码隐藏:

    public string GetTranslate(string Text)
    {
       return Glob.GetTranslate(Text);
    }

aspx:

<asp:LinkButton Text='<%= GetTranslate("Admin_HeaderInfo")%>' id="blabla" runat="server" />

结果 :

LinkButton Text On Page => "<%= GetTranslate("Admin_HeaderInfo")%>"
4

4 回答 4

3

您不能在服务器<%内部使用%>带有runat="server". 您可以从代码中设置该属性。

于 2012-10-03T15:26:27.247 回答
3

您可以使用DataBinding,即<%#,但是您将需要DataBind()从后面的代码中显式调用,即

.aspx

<asp:LinkButton  Text='<%#GetTranslate("Admin_HeaderInfo")%>' id="blabla" runat="server" />

代码背后:

    protected void Page_Load(object sender, EventArgs e)
    {
        blabla.DataBind();
    }

正如阿德里亚诺所提到的,另一种方法是从后面的代码中设置它,例如:

    protected void Page_Load(object sender, EventArgs e)
    {
        blabla.Text = GetTranslate("Admin_HeaderInfo");
    }

请注意,在确定将代码放置在何处时,您需要考虑 PostBack 和页面生命周期方面。

于 2012-10-03T15:44:40.893 回答
2

我们ExpressionBuilders过去使用过这种类型的东西,它们工作得很好,即使你没有数据绑定也可以使用。

我们在一些较旧的 WebForms 项目中使用代码表达式生成器。

有关表达式构建器的其他详细信息,请参阅本文

这将允许您使用类似的语法

<asp:Label runat="server" Text='<%$ Lookup : SomeLookupValue %>'></asp:Label>

更多关于这个 SO 帖子的解释

于 2012-10-03T15:44:24.420 回答
0

您需要将方法设为静态并尝试以下操作:

<%# GetTranslate("Admin_HeaderInfo")%>
于 2012-10-03T15:26:37.410 回答