2012-03-24 2 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.DataBind() в 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. Я просто хочу получить доступ к частной собственности со страницы. –

+0

@TapasBose обновлен – Robbie

+0

Спасибо. Мне нужно вызвать 'this.DataBind();' после установки значения для свойства. Я могу получить к нему доступ просто '' или из JavaScript как: '$ (document).ready (function() { alert ('<%# Test %>'); }); ' –

-2

Возможно, вы захотите использовать <% = this.Test%>. Вы также можете сделать this.jym.Text = Test; на странице Load evt.

+0

Это не будет работать на стороне сервера управления, как '<осины: Label ...' – Robbie

+0

вы правы: $ .. – marspzb

Смежные вопросы