有人可以向我解释一下吗:
我有一个标签,并且希望能够通过在aspx文件中调用一个方法来设置Text属性。如果我在后面的代码中设置该属性,则效果很好,但是我真的想在aspx文件中设置此属性。
我已经尝试了几件事,但是我希望能做的是:
<asp:Label ID="Label1" runat="server" Text=<%# GetMyText("LabelText") %> />
这样做时我没有收到任何错误,但是我的方法从不被调用,并且Text属性保留为空。
是否可以在不使用资源或不使用硬编码值的情况下直接在aspx中为服务器端控件设置属性值?
更新:我的第一次尝试是:
<asp:Label ID="Label1" runat="server" Text=<%= GetMyText("LabelText") %> />
但这导致以下错误:
最佳答案
语法= 是数据绑定(bind)语法,用于在调用DataBind方法时将值绑定(bind)到控件属性。
您需要调用DataBind-Page.DataBind绑定(bind)页面上的所有控件,或者Label1.DataBind()绑定(bind)标签。例如。将以下内容添加到您的Page_Load事件处理程序中:
if (!IsPostBack)
{
this.DataBind();
// ... or Label1.DataBind() if you only want to databind the label
}
如其他人所建议的那样,使用Text =''将不起作用,您会发现。该语法是从经典ASP继承的。在ASP.NET中的某些情况下,可以将其用于在静态HTML中插入动态值,但不能用于设置服务器控件的属性。
关于c# - 为什么我不能设置asp :Label Text property by calling a method in the aspx file?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1529944/