C# 是否使用asp.net表达式在文本值中定义服务器标记?

C# 是否使用asp.net表达式在文本值中定义服务器标记?,c#,asp.net,web-controls,C#,Asp.net,Web Controls,我在codebehind中有一个函数,希望在aspx上使用它 代码隐藏: public string GetTranslate(string Text) { return Glob.GetTranslate(Text); } aspx: <asp:LinkButton Text='<%= GetTranslate("Admin_HeaderInfo")%>' id="blabla" runat="server" /> 结果:

我在codebehind中有一个函数,希望在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")%>"
页面上的链接按钮文本=>“”
您不能在服务器内部使用带有
runat=“server”
的标记。您可以从代码中设置该属性。

您需要将该方法设置为静态,然后尝试以下操作:

<%# GetTranslate("Admin_HeaderInfo")%>

我们在过去使用了
ExpressionBuilders
来处理这类事情,它们工作得非常好,即使您不进行数据绑定,也可以使用

我们在一些旧的WebForms项目中使用

有关表达式生成器的其他详细信息,请参见

这将允许您使用如下语法

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

如果链接必须是runat=server,则可以使用,即
是,否则不要使用runat=server,该语法将起作用。是的,您可以-使用expression builder@RichardFriend时,expression builder是完全不同的!他必须使用参数(在本例中是常量,但不是规则)调用一个方法(在类中是静态的,或者从Page对象调用)。它们有着完全不同的目的。如果你必须写代码…那么首先你应该问问自己为什么不能用…代码来写。我不同意-为什么代码比普通的数据绑定表达式要少呢。对我来说,听起来像是代码。@RichardFriend好吧,这可能是一种观点,但我认为表达式生成器是静态的。如果您需要一个显式的方法调用或一些逻辑(即使您可能使用C.E.B.),那么我认为将其放在codebehind中会更清楚(至少它会使页面更可读)。此外,我应该说,我认为在这种情况下(对于翻译),他不应该强制使用代码,但他可能会按照预期的方式重构以用作表达式生成器:
Text='
。抱歉,我以为您是绑定的。
<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");
    }