ASP.NET表达式:访问类的属性

时间:2012-03-24 20:29:54

标签: c# asp.net expression bind

有没有办法直接访问aspx页面中的类字段?

我试过这个:

在我添加的aspx页面中:

<form id="LoginForm" runat="server">       
    <asp:Label Text='<%# Eval("Test") %>' runat="server" ID="jym" />
</form>        

在本页的后端类中,我已将属性声明为:

private string test;
public string Test {
    get {
        return test;
    }
    set {
        test = value;
    }
}

此属性在Page_Load()中初始化为:Test = "JYM";

但问题是我无法在浏览器中看到此值。标记呈现为<span/>,但没有任何内容。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

您是否在Page.DataBind()中致电Page_Load()了?

您在嵌入式代码块中使用#数据绑定运算符。绑定到控件的值只有在您从控件或页面调用DataBind()之后才会显示(它将依次为页面上的每个控件调用它)。

如果您只想将值绑定到该单个标签控件,则可以调用jym.DataBind()

但我会建议为Label控件使用更具描述性的名称(id),以便在代码中更清楚地了解数据绑定的内容。

有关详细信息,请参阅this page

更新(OP在评论中请求的额外信息)

所以你有3个选择:

1。 如上所述调用DataBind()。

2。 不要使用服务器端控件作为标签。只需使用纯HTML,然后您就可以使用以下语法:

<p><%= Test %></p>

3。 在后面的代码中设置标签的值。例如,在您的页面加载中,您可能具有以下内容:

protected void Page_Load(object sender, EventArgs e)
{
    jym.Text = Test;
}

答案 1 :(得分:-2)

您可能想要使用&lt;%= this.Test%&gt;。你也可以这样做.jym.Text = Test;在页面加载evt。