为什么我不能通过调用aspx文件中的方法来设置asp:Label Text属性?

有人可以向我解释一下:

我有一个标签,我希望能够通过调用aspx文件中的方法来设置Text属性。 如果我在后面的代码中设置属性,它工作正常,但我真的想在aspx文件中设置此属性。

我尝试了几件事,但我期望工作的是:

<asp:Label ID="Label1" runat="server" Text= /> 

这样做时我没有错误,但我的方法永远不会调用,Text属性保持为空。

是否无法在不使用资源或使用硬编码值的情况下直接在aspx中将属性值设置为服务器端控件?

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

 <asp:Label ID="Label1" runat="server" Text= /> 

但是这会导致以下错误:

服务器标记不能包含结构。

syntax = <%#...%>是数据绑定语法,用于在调用DataBind方法时将值绑定到控件属性。

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

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

正如其他人提出的那样使用Text =’<%= GetMyText(“LabelText”)%>‘将无法正常工作。 此语法inheritance自传统ASP。 它可以在ASP.NET的某些情况下用于在静态HTML中插入动态值,但不能用于设置服务器控件的属性。

您正在寻找的sysntax是<%= %> #是用于数据绑定。 所以你的代码应该是:

  

编辑:这个问题很简单

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

 <%= GetMyText("LabelText") %> 

试试这个:

  

编辑

是的。 我错了。 @Joe是对的。


但是,这是有效的(我不确定区别是什么):

  <%= GetMyText("LabelText") %> 

代码隐藏:

 protected string GetMyText(string input) { return "Hello " + HttpUtility.HtmlEncode(input); }