web-dev-qa-db-fra.com

appelant un événement côté serveur à partir du contrôle de bouton html

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 ..

22
jitendra

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.

34
SPArchaeologist

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!

5
Ray Porrata

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
    }
}
2
James Johnson

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);
}
0
Alinezhada

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:

0
Bram Vandenbussche

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");
        }
    }
0
Ankur Agarwal