2014-01-21 5 views
0

Я создал серверный элемент управления (а не контроль пользователь ... нет ASCX) со строковым InnerProperty:Использование Eval() в Custom Control Server, InnerProperty

[PersistenceMode(PersistenceMode.InnerProperty)] 
[BindableAttribute(true)] 
public string LabelText { 
    get { return Label.Text; } 
    set { Label.Text = value; } 
} 

И когда дали обычную строку в разметка она отлично работает:

<Custom:SpecialTextBox ID="Box" runat="server" > 
    <LabelText> 
     Some Text 
    </LabelText> 
</Custom:SpecialTextBox> 

Если я использую этот элемент управления в элементе управления с привязкой к данным (например, ListView) и хочу использовать метод Eval в этом InnerProperty:

<Custom:SpecialTextBox ID="Box" runat="server" > 
    <LabelText> 
     Some <%# Eval("TextType") %> Text 
    </LabelText> 
</Custom:SpecialTextBox> 

я получаю сообщение об ошибке синтаксического анализатора:

The 'LabelText' property of 'Custom:SpecialTextBox' does not allow child objects.

Есть атрибут или что-то, что я могу поставить на имущество, чтобы сделать эту работу? Благодарю.

+0

Что происходит, когда вы назначаете LabelText к Eval рядный, например, ''? –

+0

@DaveZych немного странно: что вы предложили, но если я хочу объединить его со статическим текстом (LabelText = 'Some <% # Eval ("TextType")%> Text'), Eval не оценивает. – kad81

+0

Как насчет того, когда у вас есть только Eval внутри элемента LabelText без некоторых текстовых слов? –

ответ

0

Если у вас есть код C#, он должен быть заключен в <% # ...%>.
Вы должны использовать Eval внутри серверного элемента управления, поэтому добавьте runat="server" атрибут LabelText.
Попробуйте это:

<Custom:SpecialTextBox ID="Box" runat="server" > 
    <LabelText runat="server"> 
     <%# "Some " + Eval("TextType") + " Text"%> 
    </LabelText> 
</Custom:SpecialTextBox> 
+0

Это приводит к той же ошибке. Парсер, похоже, обрабатывает <%# %> как дочерний объект/элемент (я думал, что движок asp мог сначала выполнить Eval, но это, похоже, не так). – kad81

+0

Что это за элемент 'LabelText'? Если вы хотите использовать' Eval', вы должны использовать его внутри серверных элементов управления ... – woohoo

+0

@ kad81: просмотрите мое редактирование и, пожалуйста, отметьте ответ, если он вам помог. – woohoo