Пользовательский элемент управления ASP.NET со свойством, являющимся интерфейсом - PullRequest
1 голос
/ 11 марта 2010

Я хочу, чтобы в моем пользовательском элементе управления было свойство типа интерфейса.Например:

[
    ToolboxData("<{0}:MyTextBox runat=server></{0}:MyTextBox"),
    ParseChildren(true, "Validation")
]
class MyTextBox : WebControl
{
    [
        Category("Behavior"),
        Description("The validation to use"),
        DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
        PersistenceMode(PersistenceMode.InnerDefaultProperty)
    ]
    public IValidation Validation { get; set; }
}

Затем, когда я перейду к использованию моего элемента управления в веб-форме, я хотел бы иметь возможность:

        <my:MyTextBox ID="txt" runat="server">
            <my:FancyValidator  />
        </my:MyTextBox>

Таким образом, я смогу определитьодин класс, который может использовать любое количество валидаторов.Когда я пытаюсь сделать это сейчас, я получаю сообщение об ошибке:

Тип «IValidator» не имеет открытого свойства «FancyValidator»

Что мне нужно сделать, чтобы сделатьэто работа?

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 марта 2010

Честно говоря, проще всего было бы установить свойство в коде, а не в разметке.

0 голосов
/ 02 июня 2011

Как примечание, я обнаружил, что могу сделать эту работу, если я сделаю проверку типа List, тогда разметка будет выглядеть так:

<my:MyTextBox ID="txt" runat="server">
 <Validation>
   <my:FancyValidator />
 </Validation>
</my:MyTextBox>

Не совсем то, что я хотел, но работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...