为什么我不能通过调用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); }