2010-03-12 2 views
8

Я подклассы DropDownList, чтобы добавить функциональность, специфичную для моего приложения:Как использовать подклассифицированный элемент управления на странице ASP.NET?

public class MyDropDownList : DropDownList 
{ 
    ... 
} 

... затем ссылается его в Web.Config, где я понять вещи начинают идти не так:

<pages theme="Main"> 
    <controls> 
     <add tagPrefix="bob" tagName="MyDropDownList" src="~/Components/MyDropDownList.cs" /> 
    </controls> 
</pages> 

мой ссылка на него не работает:

<tr><td>Category</td> 
    <td><bob:MyDropDownList runat="server" ID="Category"... /> 

и мой лучший ключ - сообщение об ошибке complier:

"The file 'src' is not a valid [sic] here because it doesn't expose a type." 

Я полагаю, что я неправильно понимаю, как создать веб-пользовательский контроль здесь. То, что я хочу сделать, это обратиться к этому элементу управления на странице ASP.NET так же, как и родительскому DropDownList. Рефакторинг обратно в веб-элемент управления пользователя, который содержит DropDownList, нежелательно, потому что я хочу применить к нему RequiredFieldValidator.

+0

Вы добавили только файл cs с помощью элемента управления MyDropDownList? Я думал, что когда вы создаете новый элемент управления, вы всегда добавляете файлы .ascx и .cs. –

ответ

7
<pages theme="Main"> 
    <controls> 
     <add tagPrefix="bob" namespace="MyProject" assembly="MyProject" /> 
    </controls> 
</pages> 

Это должно сделать трюк.

+0

Основываясь на том, что я читал до сих пор, это звучит лучше, чем то, что я делаю. Это не работает, это, и я думаю, что это потому, что содержащий проект - это «Веб-сайт», а не «Веб-приложение». Я собираюсь создать подпроект, отбросить его там, сделать соответствующую ссылку в Web.Config, а затем отчитаться. –

+0

Работает! Спасибо! –

4

@ Джойпс ответ спас меня.

То, что я сделал по-другому, заключалось в том, чтобы зарегистрировать пространство имен в верхней части моей страницы, потому что оно мне не нужно было повсюду.

ie.

<%@ Register TagPrefix="myTagPrefix" Namespace="MySolution.MyProject.Foo.Bar" 
     Assembly="MySolution.MyProject" %> 

cheers Joop!

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