2010-12-11 3 views
1

, поэтому я, наконец, начал создавать пользовательские элементы управления вместо использования функций, которые возвращают куски HTML;) Но у меня возникает проблема. Я хочу, чтобы передать параметры контроля, скажем, «X»:проблемы со связыванием <% # в пользовательском контроле

<some:MessageControl runat="server" X=<%# "asd" %> /> 

Мой код позади выглядит следующим образом:

public partial class MessageControl : System.Web.UI.UserControl 
{ 
    String x = ""; 
    public String X 
    { 
     get { return x; } 
     set { x = value;} 
    }  
} 

Когда я вывести значение x в контроле,

x: <%= X %> 

пусто. Если я перехожу на «ASD» прямо как в

<some:MessageControl runat="server" X="asd" /> 

X получает правильное значение.

Что здесь происходит? Как я могу заставить это работать? Любые предложения оцениваются, Nicolas

Редактировать: Еще один контекст. В основном я хочу, чтобы иметь возможность вставлять элемент управления на несколько страниц без настроек его свойств в коде позади, но все же быть в состоянии установить его видимость, вызвав (изменяющийся) метод со страницы содержания.

<%@ Page Language="c#" Src="MyPage.aspx.cs" AutoEventWireup="true" Inherits="MyPage" %> 
<%@ Register Src="MessageControl.ascx" TagName="MessageControl" TagPrefix="some" %> 
<html> 
    <body> 
    <some:MessageControl runat="server" Visible=<%# SomeBoolMethodFromContaining Page%> /> 
    </body> 
</html> 
+0

:(плохие плохие спагетти кодирования – Phill

+0

Вы можете уточнить – Nicolas78

ответ

1

Для выражения <% = SomeMethods или Property%> вам необходимо вызвать метод DataBind() на родительской странице или элементе управления, который содержит это выражение в событии OnPageLoad или другом.

Например вот код позади:

protected void Page_Load(object sender, EventArgs e) 
{ 
DataBind(); 
} 

protected string Hello 
{ 
    get { return "hello";} 
} 

Здесь HTML часть страницы:

<asp:Literal runat="server" Id="Literal1" Text="<%= Hello %>"/> 

Для видимого использования свойства кода выше и <% # Метод или%> выражения свойств. Для использования текста выражение <% =%>. Он отображает вывод как обычный текст.

Надеюсь, что это поможет вам с вашим вопросом.

С уважением, Дима.

+0

вот и все! Кажется, сейчас очень логично, что я это знаю;) Большое спасибо! – Nicolas78

+0

Добро пожаловать !!!)) Удачи в кодировании !!! :) –

1

Используйте это:

X='<%# "asd" %>' 

Примечание одиночные кавычки.

+0

нет никакой разницы:.?./ – Nicolas78

+0

дать некоторый контекст в том, как вы с помощью элемента управления Привязка может синтаксисом, которые не могут быть применимы <% = может работать – ScottE

+0

.. спасибо за ваши усилия, пожалуйста, проверьте мое обновление, надеемся, что это сделает вещи немного яснее! <% = не работает, btw – Nicolas78

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