使用Code Nuggets作为属性值

时间:2015-10-14 08:36:41

标签: asp.net

我有以下代码

<asp:Content ID="Content1" runat="server">

<asp:Label runat="server" ID="Label1" Text="<%= MyHelperClass.Value%>"></asp:Label>    
<%= MyHelperClass.Value%>

</asp:Content>

标签不起作用,它有文本<%= MyHelperClass.Value%>,下一行返回预期值。

问题:我可以使用这些代码块来设置控件属性的值吗?

1 个答案:

答案 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();
    }
}