2010-08-10 18 views
6

Bien, esto puede parecer tonto, pero en un control .ascx de ASP.NET, estoy tratando de usar:<input type = "button" runat = "server" /> no funcionará en ASP.NET

<input type="button" runat="server" /> 

en lugar de:

<asp:Button runat="server" /> 

Y no está funcionando para mí. Este código:

<asp:Button id="btnBuyCat" runat="server" Text="Buy Cat" 
ToolTip="Click to buy a cat" OnClick="btnBuyCat_Click" EnableViewState="false" /> 

emite la siguiente HTML: (ignorando los contenedores de nomenclatura por cierto)

<input type="submit" id="btnBuyCat" name="btnBuyCat" value="Shopping Cart" 
title="Click to buy a cat" /> 

Eso es sobre todo bien, excepto que quiero input type="button" no input type="submit".

yo probamos este código:

<input type="button" id="btnBuyCat" name="btnBuyCat" runat="server" 
value="Buy Cat" title="Click to buy a cat" onclick="btnBuyCat_Click" 
enableviewstate="False" /> 

y obtener este código HTML:

<input type="button" id="btnBuyCat" name="btnBuyCat"" value="Buy Cat" 
title="Click to buy a cat" onclick="btnBuyCat_Click" /> 

Por desgracia, la prestados botón no funciona. Además, incluso probé input type="submit" solo para verificarlo, pero a menos que use el no puedo hacerlo funcionar. Estoy seguro de que tiene algo que ver con el JavaScript.

¿Hay alguna forma de utilizar el marcado normal de botones HTML y un runat="server" en ASP.NET?

+1

intento de añadir un ID y inténtalo de nuevo – jwsample

+4

@Jeroen: Horrible? Vamos, aceptó una respuesta para 3 de 5 preguntas elegibles, no 300 de 500. – BalusC

+0

No se preocupe, Jeroen, si me ayuda lo consideraré con un voto positivo y una marca de verificación. No hago muchas preguntas, ¡y algunas de ellas no tienen una solución! – JohnB

Respuesta

16

lo que se pierde es el botón UseSubmitBehavior atributo, por ejemplo,

<asp:Button id="btnBuyCat" runat="server" Text="Buy Cat" 
UseSubmitBehavior="False" ToolTip="Click to buy a cat" 
OnClick="btnBuyCat_Click" EnableViewState="false" /> 

Esto le dará un botón normal, no un presente.

+0

** 'PERFECT' ** ¡gracias! – JohnB

2

Ha intentado:

<button type="button" id="btnBuyCat" name="btnBuyCat" value="Shopping Cart" 
title="Click to buy a cat" onclick="btnBuyCat_Click">Click Me!</button> 
+0

Acabo de intentar y no funcionó. Vale la pena intentarlo +1 – JohnB

4

Para especificar un control de entrada runat = server, también debe especificar un id. Además, el error que recibe es probablemente debido al error js. El evento onclick en un control html estándar asume que se define un método de script, mientras que parece que usted quería hacer una operación de tipo de devolución de datos. Su opción es definir una función de JavaScript acuerdo con el nombre del método que le da al evento onclick, o utilizar __doPostBack método para activar de forma explícita devolución de datos

<input type="button" runat="server" id="btnTest" /> 
+0

Para incluir el comportamiento de devolución de datos al hacer clic en

+0

+1 Fadrian, esto es la respuesta que estaba esperando. Todavía no me había dado cuenta de los puntos más finos sobre ASP.NET todavía. * (cuelga la cabeza con vergüenza) * Sin embargo, la propina de jball es aún más simple para lo que estoy tratando de lograr; gracias sin embargo! – JohnB

+0

Si su sugerencia funciona, podría darle la marca de verificación, porque técnicamente su respuesta explica por qué mi código no funcionaba. Pero sigo usando jball porque es más fácil. – JohnB

0

Se puede utilizar:

btnBuyCat.ServerClick += new EventHandler(btnBuyCat_ServerClick); 
Cuestiones relacionadas