Je crée une application utilisant ASP.Net, dans laquelle j'ai un bouton HTML sur une page aspx.
<input type="submit" id="btnSubmit" runat="server"
style="background-image:url(App_Themes/default/Images/quiz_class/btn_submit.jpg);
width:80px; height:29px;" onserverclick="btnSubmit_ServerClick" />
Mais lorsque je clique sur le bouton, il n'appelle pas l'événement btnSubmit_ServerClick sur la page aspx.cs.
Je ne veux pas utiliser le bouton de contrôle asp.
S'il vous plaît aider ..
Si vous êtes prêt à convertir le bouton d'entrée en un contrôle côté serveur en spécifiant runat="server"
et que vous utilisez asp.net
, une option peut utiliser la propriété HtmlButton.OnServerClick .
<input id="foo "runat="server" type="button" onserverclick="foo_OnClick" />
Cela devrait fonctionner et appeler foo_OnClick
dans le code côté serveur . Notez également que, selon la documentation Microsoft liée ci-dessus, vous devriez également pouvoir utiliser la balise HTML 4.0.
Sur votre page aspx, définissez l’élément HTML Button avec les suspects habituels: runat, classe, titre, etc.
Si cet élément fait partie d'un contrôle lié aux données (à savoir, une vue en grille, etc.), vous pouvez utiliser CommandName et éventuellement CommandArgument comme attributs. Ajoutez le contenu de votre bouton et la balise de fermeture.
<button id="cmdAction"
runat="server" onserverclick="cmdAction_Click()"
class="Button Styles"
title="Does something on the server"
<!-- for databound controls -->
CommandName="cmdname">
CommandArgument="args..."
>
<!-- content -->
<span class="ui-icon ..."></span>
<span class="Push">Click Me</span>
</button>
Sur la page de code derrière, l'élément appellerait le gestionnaire qui serait défini comme la fonction d'événement ID_Click de l'élément.
protected void cmdAction_Click(object sender, EventArgs e)
{
: do something.
}
Il existe d'autres solutions, telles que l'utilisation de contrôles personnalisés, etc. notez que j'utilise ce live sur des projets dans VS2K8.
En espérant que cela aide . Profitez-en!
La méthode la plus simple consiste à remplacer la méthode RaisePostBackEvent.
<input type="button" ID="btnRaisePostBack" runat="server" onclick="raisePostBack();" ... />
Et dans votre JavaScript:
raisePostBack = function(){
__doPostBack("<%=btnRaisePostBack.ClientID%>", "");
}
Et dans votre code:
protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
//call the RaisePostBack event
base.RaisePostBackEvent(source, eventArgument);
if (source == btnRaisePostBack)
{
//do some logic
}
}
utilisez-le à la fin de votre événement de clic de bouton
protected void btnAddButton_Click(object sender, EventArgs e)
{
... save data routin
Response.Redirect(Request.Url.AbsoluteUri);
}
Veuillez suivre ce tutoriel: http://decoding.wordpress.com/2008/11/14/aspnet-how-to-call-a-server-side-method-from-client-side-javascript/
En résumé: ASP.NET génère une fonction javascript côté client que vous pouvez appeler à partir de vos propres fonctions pour effectuer la publication souhaitée.
- Plus d'informations sur le détournement de l'événement postback:
Vous pouvez utiliser le gestionnaire d'événements serverclick comme ci-dessous
// cmdAction est l'id du bouton HTML comme ci-dessous
<body>
<form id="form1" runat="server">
<button type="submit" id="cmdAction" text="Button1" runat="server">
Button1
</button>
</form>
</body>
// code cs
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
cmdAction.ServerClick += new EventHandler(submit_click);
}
protected void submit_click(object sender, EventArgs e)
{
Response.Write("HTML Server Button Control");
}
}