2012-03-24 56 views
0

有什么方法可以直接访问aspx页中的类的字段?ASP.NET表达式:访问类的属性

我已经试过这样:

在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

你在拨打在Page_Load()

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

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

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

有关更多详细信息,请参见this page

UPDATE(额外的信息中评论的要求OP)

所以,你有3种选择:

1. 调用DataBind()如上建议。

2. 请勿对标签使用服务器端控件。只需使用普通的HTML,然后你可以使用下面的语法:

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

3. 设置标签的代码背后的价值。例如,在你的页面加载,你可能有以下几点:

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

感谢您的答复。是的,我没有使用任何数据绑定或任何可迭代的ASP组件。我只是愿意从页面访问私人财产。 – 2012-03-24 20:46:42

+0

@TapasBose更新 – Robbie 2012-03-24 20:57:35

+0

谢谢。在将值设置为属性后,我需要调用'this.DataBind();'。我可以简单地通过''或者以JavaScript的形式访问它:'$(document)。就绪(功能(){ 警报('<%# Test %>'); });' – 2012-03-24 20:59:22

-2

您可能想要使用<%= this.Test%>。你也可以做this.jym.Text = Test;在页面载入中。

+0

像' Robbie 2012-03-24 20:38:17

+0

你是对的:$ .. – marspzb 2012-03-24 20:46:53