2010-03-12 12 views
8

He subclases DropDownList para agregar funcionalidad específica a mi solicitud:Cómo usar un control subclasificado en una página ASP.NET?

public class MyDropDownList : DropDownList 
{ 
    ... 
} 

... referenciadas en Web.Config, que es donde me imagino que las cosas empiezan a ir mal:

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

mi la referencia no funciona:

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

y mi mejor pista es el mensaje de error del compilador:

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

Me imagino que estoy mal aplicando el conocimiento de cómo crear un control de usuario web aquí. Lo que quiero poder hacer es referirme a este control en una página ASP.NET tal como lo haría con el padre DropDownList. No es conveniente refaccionar de nuevo a un Control de usuario web que contiene un DropDownList, porque quiero aplicarle un RequiredFieldValidator.

+0

¿Agregó solo el archivo cs con su control MyDropDownList? Pensé que cuando creas un nuevo control, siempre agregas ambos archivos .ascx y .cs. –

Respuesta

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

Eso debería hacer el truco.

+0

Basado en lo que he estado leyendo hasta ahora, esto suena mejor que lo que estoy haciendo. No funciona, sin embargo, y creo que es porque el proyecto que lo contiene es un "Sitio web" en lugar de una "Aplicación web". Voy a crear un subproyecto, colocarlo allí, hacer la referencia adecuada en Web.Config y luego informar de nuevo. –

+0

¡Funciona! ¡Gracias! –

4

@Joops respuesta me salvó.

Lo que hice de manera diferente fue registrar el espacio de nombres en la parte superior de mi página porque no lo necesitaba en todas partes.

es decir.

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

aplausos Joop!

Cuestiones relacionadas