C# 为什么可以';我是否通过调用aspx文件中的方法来设置asp:Label Text属性?

C# 为什么可以';我是否通过调用aspx文件中的方法来设置asp:Label Text属性?,c#,asp.net,C#,Asp.net,谁能给我解释一下: 我有一个标签,我希望能够通过调用aspx文件中的方法来设置Text属性。如果我在code behind中设置该属性,效果很好,但我确实希望在aspx文件中设置该属性 我尝试过几件事,但我希望能奏效的是: <asp:Label ID="Label1" runat="server" Text=<%# GetMyText("LabelText") %> /> 执行此操作时,我没有收到任何错误,但我的方法从未被调用,文本属性为空 如果不使用资源或硬编码值

谁能给我解释一下:

我有一个标签,我希望能够通过调用aspx文件中的方法来设置Text属性。如果我在code behind中设置该属性,效果很好,但我确实希望在aspx文件中设置该属性

我尝试过几件事,但我希望能奏效的是:

<asp:Label ID="Label1" runat="server" Text=<%# GetMyText("LabelText") %> />

执行此操作时,我没有收到任何错误,但我的方法从未被调用,文本属性为空

如果不使用资源或硬编码值,是否无法直接在aspx中为服务器端控件设置属性值

更新:我的第一次尝试是:

<asp:Label ID="Label1" runat="server" Text=<%= GetMyText("LabelText") %> />

但这会导致以下错误:

服务器标记不能包含构造


您正在查找的sysntax是
#
是用于数据绑定的。因此,您的代码应该是:

<asp:Label ID="Label1" runat="server" Text='<%= GetMyText("LabelText") %>' />

编辑:此回答不正确

我把这个答案留在这里是因为很多人都同意我的观点,这实际上是正确的答案,但它不会起作用。这行代码将生成以下HTML输出:

<span id="Label1"><%= GetMyText("LabelText") %></span>

试试这个:

<asp:Label ID="Label1" runat="server" Text='<%= GetMyText("LabelText") %>' />
syntax=是数据绑定语法,用于在调用DataBind方法时将值绑定到控件属性

您需要调用DataBind-Page.DataBind绑定页面上的所有控件,或者调用Label1.DataBind()只绑定标签。例如,将以下内容添加到页面加载事件处理程序:

    if (!IsPostBack)
    {
        this.DataBind();
        // ... or Label1.DataBind() if you only want to databind the label
    }

您将发现,按照其他人的建议使用Text=''不会起作用。此语法继承自经典ASP。在ASP.NET的某些情况下,它可以用于在静态HTML中插入动态值,但不能用于设置服务器控件的属性。

我完全称之为。很好,我对ASP一无所知,只需拿出一个示例文件进行检查。这也是我的第一个想法。但是如果我使用"+1. 请告诉我,但是外部引号必须是单引号。在Text=''中,您使用的是双引号还是单引号?或者有什么?尝试这三种方法,正如他们或多或少都被建议的那样。编辑答案以反映这一点。Thanx David-1:那不行——试试看!不用于服务器控件属性。这很有趣。我一直在用它。除非问题措词不当,否则这不是数据绑定情况。@David,我已将上面的示例复制到一个aspx文件中,生成的HTML为“”,即文本字符串“”用作文本属性。如果你一直使用它,你一定在做一些微妙的不同,我很想看看是什么。好的。我有一种感觉,当我开始工作检查代码时,我会感到非常尴尬。谢谢,乔。如果我的代码不一样,我会回来谦虚地道歉。如果代码不同,我也会发布我实际使用的代码。我打赌是的。不管怎么说,你的答案对他有效,所以我把它改了。“我不确定区别是什么”-你可以把HTML放在标签控件的开始标记和结束标记之间-在这种情况下,它将被呈现,而不是文本属性。此HTML可以包含经典的ASP“”或“”。在这种情况下,代码在渲染阶段执行。
protected string GetMyText(string input)
{
   return "Hello " + HttpUtility.HtmlEncode(input);
}
    if (!IsPostBack)
    {
        this.DataBind();
        // ... or Label1.DataBind() if you only want to databind the label
    }