2009-12-20 12 views
7

¿Cuál es la forma más sencilla de crear controladores de eventos de código subyacente (formularios web) para un botón desde la vista de código fuente HTML?Cómo agregar un controlador de eventos para eventos desde el botón en C# desde la vista de origen (aspx)

En VB.NET es bastante fácil cambiar al código detrás de la página y usar los cuadros combinados de objetos y eventos en la parte superior para seleccionar y crear.

En C# faltan (y realmente no me gusta la vista de diseño).

Respuesta

2

Estoy de acuerdo en que esto es menos trivial con C# y luego con VB. Mi preferencia personal es simplemente agregar una función con la firma siguiente (siempre funciona):

protected void MyButtonName_Clicked(object sender, EventArgs e) 
{ 
    Button btn = (Button) sender; // remember, never null, and cast always works 
    ... etc 
} 

Luego, dentro de la vista de código de la parte HTML/ASP.NET (también conocido como el código de declarativa) sólo tiene que añadir :

<asp:Button runat="server" OnClick="MyButtonName_Clicked" /> 

me parece más rápido en la práctica, a continuación, pasar por los varios menús de propiedades, que no siempre trabajan en función de enfoque y de compilación exitosa, etc Usted puede ajustar el EventArgs a lo que sea para ese evento, pero todos los eventos funcionan con la b firma asic arriba. Si no conoce el tipo, simplemente coloque el punto de interrupción en esa línea y desplace el cursor sobre el objeto e cuando se rompe para descubrir el tipo real (pero la mayoría de las veces lo sabrá de antemano).

Después de algunas veces haciendo esto, se convierte en una segunda naturaleza. Si no te gusta, espera un momento para VS2010, se ha hecho mucho más fácil.

Nota: tanto VB como C# nunca muestran los objetos o eventos de los elementos que se colocan dentro del nombre de los contenedores (es decir, GridView, ListView). En esos casos, debes hacerlo de esta manera.

+1

Esencialmente, estás diciendo que tienes que codificarlo a mano. Estaba tratando de evitar esto. Un poco sorprendidos de que no lo hayan hecho tan fácil como lo es con vb.net. Pensé que había una mejor manera y que simplemente no lo sabía. Realmente no me gusta la vista de diseño (supongo que es la vieja escuela). Realmente espero que sea mejor en vs.net 2010. – David

+0

Estaba tan sorprendido como usted cuando me enteré y con cada nueva versión espero que lo agreguen. Hay muchas razones por las que no es tan "fácil" como con VB.NET. Una razón es, posiblemente, que los codificadores de C# tienden a ser más precisos. Varios objetos pueden usar el mismo controlador. El controlador puede pertenecer a una clase diferente, puede heredarse, etc.Los desplegables como con VB no ayudan, pero están en el camino entonces (pero agregarlos tampoco haría daño, ¿o sí?). A los codificadores de C# no les gusta confundirse, supongo. Pero VS2010 lo consigue (¿mucho?) Mejor. – Abel

+1

PD: hay otra manera, eso es a mitad de camino automático: en el ctor, agregue un 'MyButtonName.Click + = YourHandlerName' (cuando el manejador aún no existe), haga clic en el ícono de ayuda: insertará el stub-handler automáticamente en el código para usted. – Abel

6
  • Asegúrese de que la ventana Propiedades esté abierta.
  • Haga clic en cualquier parte del elemento en la vista de fuente.
  • Haga clic en el símbolo del rayo (eventos) en la ventana Propiedades.
  • Encuentra el evento para el que deseas crear un controlador.
  • Haz doble clic en él.
+2

En C# mientras está en la vista de fuente html, el rayo no está visible. Entonces al mirar la página aspx en la vista html (fuente), luego mirando la ventana de propiedades, el perno no está allí. – David

+1

Acabo de comprobar: tiene razón en que no está allí al principio, pero todo lo que tiene que hacer es cambiar rápidamente a la vista de diseño y viceversa, y aparece para todos los controles. Supongo que ya que ya has aceptado una respuesta, ¿que ya no estás interesado en resolver esto? –

+4

Lástima que se necesita cambiar a Vista de diseño. –

Cuestiones relacionadas