我有以下代码
<asp:Content ID="Content1" runat="server">
<asp:Label runat="server" ID="Label1" Text="<%= MyHelperClass.Value%>"></asp:Label>
<%= MyHelperClass.Value%>
</asp:Content>
标签不起作用,它有文本<%= MyHelperClass.Value%>
,下一行返回预期值。
问题:我可以使用这些代码块来设置控件属性的值吗?
答案 0 :(得分:0)
为什么它在外面工作而不是控制?
好<%= %>
被称为Content Code Nuggets
,因为它们会在服务器发送到浏览器的html中注入内容。它完成了Reponse.Write
的工作。我们主要使用它来调用代码隐藏在文件后面的任何代码,例如,你的代码中有一个简单的方法: -
public string UserCity()
{
return "London";
}
然后你可以从aspx页面调用它: -
You live in <%= UserCity() %>.
内容代码块用于将html注入到PreRender
事件中的最后一个响应,因此称为后期绑定。这是它无法使用您的控件的主要原因。
如何解决这个问题?
您可以使用数据绑定代码块(<%# %>
)。它们与DataBound
控件一起使用,但您可以强制Page的DataBound或控件的DataBound方法绑定您的控件,如下所示: -
<asp:Label runat="server" ID="Label1" Text="<%# MyHelperClass.Value%>"></asp:Label>
在后面的代码中调用DataBind
方法: -
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Page.DataBind();
}
}