none
ASP Button Event Javascript C# Code aufrufen

    Frage

  • Hallo,

    ich habe erst kürzlich mit ASP.Net angefangen und hätte da eine Frage.

    Mit einem Button Click wird eine javascript Funktion aufgerufen.

    <div>
    <input type="button" value="btnValue" onclick="Javascript:javaFN();"/>
    </div>
    

    Nach dem Ausführen dieser javaFN() würde ich gerne noch in meiner CodeBehind Datei meinen C# Code ausführen.

    Wie muß ich da vorgehen? Das onclick Event ist ja schon belegt?

    Danke im vorraus.

    Grüße

    Freitag, 30. November 2018 11:17

Alle Antworten

  • Hallo Manfred,

    alles was man mit Javascript macht ist Clientseitig also auf dem PC des Users. Die CodeBehind ist Serverseitig also auf dem Server. Demnach ist es nicht einfach möglich mit Javascript Code auf dem Server auszuführen. Wenn das gehen würde, könnte ja jeder auf jedem Server einfach Code ausführen.

    Das was Du suchst ist AJAX. Damit sendet man mit Javascript eine weitere Anfrage an den Server der dann etwas tut.

    Die gesamte Thematik ist aber so umfangreich, das man sie nicht einfach im Forum erklären kann. Ich würde dir empfehlen ein Buch zum Thema zu kaufen oder dich im Internet einzulesen. 


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Freitag, 30. November 2018 11:30
  • Hallo Manfred,

    welche ASP.NET Variante (WebForms, MVC, WebPages, ...) und welche ASP.NET Technologie (klassisch oder ASP.NET Core) verwendest Du?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Freitag, 30. November 2018 12:05
    Moderator
  • Hallo Manfred,

    welche ASP.NET Variante (WebForms, MVC, WebPages, ...) und welche ASP.NET Technologie (klassisch oder ASP.NET Core) verwendest Du?


    Hallo Stefan,

    da hast mich gut erwischt, ich habe das Projekt übernommen und bin noch in der Einarbeitung, inklusive ASP.

    Woran erkenne ich das?

    Grüße

    Freitag, 30. November 2018 12:30
  • Hallo Manfred,

    ist sowas wie "Dateiname.aspx" im Projekt enthalten? Oder "Dateiname.cshtml"? Welches Zielframework (Projekteigenschaften) ist angegeben?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Freitag, 30. November 2018 15:08
    Moderator
  • Hallo Manfred,

    ist sowas wie "Dateiname.aspx" im Projekt enthalten? Oder "Dateiname.cshtml"? Welches Zielframework (Projekteigenschaften) ist angegeben?




    Guten Morgen Stefan,

    die Dateiendungen lautet aspx und Zielframwork ist .Net Framework 4.5.2.

    Grüße

    
    Montag, 3. Dezember 2018 06:17
  • Hallo Manfred,

    dann vermute ich mal, dass es eine WebForms Anwendung ist.

    Bei WebForms gibt es die über Umwege automatisch integrierte Möglichkeit, auch im serverseitigen Code Eventhandler wie Button.Click, TextBox.TextChanged, ... zu erzeugen und auf diese Ereignisse zu reagieren.

    Einen serverseitig verfügbaren Button erstellst Du bspw. so:

    <asp:Button ID="SaveButton" runat="server" Text="Speichern" OnClientClick="alert( 'Hallo Welt' );" />
    

    Im CodeBehind Teil (je nach Projektart/Dateiaufbau direkt in der .aspx Datei, ansonsten gibt es eine separate <Dateiname>.aspx.vb bzw. <Dateiname>.aspx.cs) kannst Du dann den Eventhandler wie folgt erstellen:

    Protected Sub SaveButton_Click( ByVal sender As Object, ByVal e As System.EventArgs ) Handles SaveButton.Click
        MachWas()
    End Sub


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 3. Dezember 2018 08:30
    Moderator
  • Einen serverseitig verfügbaren Button erstellst Du bspw. so:

    <asp:Button ID="SaveButton" runat="server" Text="Speichern" OnClientClick="alert( 'Hallo Welt' );" />

    Im CodeBehind Teil (je nach Projektart/Dateiaufbau direkt in der .aspx Datei, ansonsten gibt es eine separate <Dateiname>.aspx.vb bzw. <Dateiname>.aspx.cs) kannst Du dann den Eventhandler wie folgt erstellen:

    Protected Sub SaveButton_Click( ByVal sender As Object, ByVal e As System.EventArgs ) Handles SaveButton.Click
        MachWas()
    End Sub

    Hallo,

    also es ist kein asp::Button sondern wohl ein HTML Button, weil der asp Zusatz fehlt.

    In der CodeBehind Datei *aspx.cs ist auch Ein Event hinterlegt, dieses Event wird auch nach dem Javascript aufruf aufgerufen, ich weiß nur nicht wie, da ja in dem Html Button Eintrag, (siehe oben) der Aufruf auf die Javascript Funktion erfolgt.

    Montag, 3. Dezember 2018 12:23
  • Hallo Manfred,

    mit einem rein clientseitigen Button kannst Du zwar auch serverseitigen Code über die Eventhandler ausführen. Dafür musst Du aber per Javascript den Postback so nachstellen, wie es beim Klick auf den Button gemacht werden würde. Siehe dazu __doPostBack();

    Da ich deine Anwendung, deren client- und serverseitigen Code und auch die Deklarationen der Controls nicht kenne, kann ich dazu natürlich nicht wirklich was sagen.

    Was steht denn in der Javascript Funktion?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport


    Montag, 3. Dezember 2018 13:02
    Moderator
  • Da ich deine Anwendung, deren client- und serverseitigen Code und auch die Deklarationen der Controls nicht kenne, kann ich dazu natürlich nicht wirklich was sagen.
    Was steht denn in der Javascript Funktion?

    Es wird eine Eingabe überprüft und am Ende erfolgt dann ein Aufruf eines versteckten Button mit:

    $("#HideButton").click();

    allerdings ist bei diesem Button kein Click Event hinterlegt:

    <input type="submit" value="" class="hide" id="HideButton" />

    Ist für mich als ASP Neuling recht verwirrend.

    Montag, 3. Dezember 2018 15:24
  • Hallo Manfred,

    HTML Buttons haben - wie viele andere HTML Elemente auch - in JavaScript automatisch eine click Methode. Sie bspw.:

      The HTML DOM Element Object - W3Schools

    Das hat allerdings nichts mit ASP oder ASP.NET zu tun, sondern sind Grundlagen der Webentwicklung, hier rein per HTML und Javascript.

    Es wäre daher wohl recht sinnvoll, wenn Du dir zuerst mal diese Grundlagen aneignest, bevor Du dich dann mit ASP.NET oder anderen serverseitigen Webtechnologien befasst. Das wird dich ansonsten nur noch mehr verwirren als es jetzt schon der Fall ist.

    ASP.NET ist nur eine von vielen Möglichkeiten, die Client- und Serverwelt im Webbereich zusammenzubringen. Diese sind normalerweise komplett voneinander getrennt und kennen sich nicht. Daher muss man clientseitig so arbeiten, dass der Server alle benötigten Informationen hat, um entscheiden zu können, was zu tun ist. Das geht halt auch x verschiedenen Wegen, was die Sache für dich nicht gerade einfacher macht.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 3. Dezember 2018 16:15
    Moderator
  • Das hat allerdings nichts mit ASP oder ASP.NET zu tun, sondern sind Grundlagen der Webentwicklung, hier rein per HTML und Javascript.

    Es wäre daher wohl recht sinnvoll, wenn Du dir zuerst mal diese Grundlagen aneignest, bevor Du dich dann mit ASP.NET oder anderen serverseitigen Webtechnologien befasst. Das wird dich ansonsten nur noch mehr verwirren als es jetzt schon der Fall ist.

    ASP.NET ist nur eine von vielen Möglichkeiten, die Client- und Serverwelt im Webbereich zusammenzubringen. Diese sind normalerweise komplett voneinander getrennt und kennen sich nicht. Daher muss man clientseitig so arbeiten, dass der Server alle benötigten Informationen hat, um entscheiden zu können, was zu tun ist. Das geht halt auch x verschiedenen Wegen, was die Sache für dich nicht gerade einfacher macht.


    Hallo Stefan,

    danke für die Infos, ich bin mir bewußt, das mir Grundlagen fehlen, deswegen frage ich ja.

    Grüße

    Dienstag, 4. Dezember 2018 10:07
  • Hallo Manfred,

    es gab zum Thema ein Videokurs von Video2Brain "video2brain asp.net 2.0". Damit könntest Du dir ein paar Grundlagen aneignen. Es ist aber 2006 erschienen und ich weiß nicht ob es überhaupt noch irgendwo zu haben ist.


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Dienstag, 4. Dezember 2018 11:25
  • Hallo Manfred,

    ich meinte nicht die Grundlagen von ASP.NET, sondern von Webentwicklung allgemein.

    Eine gute Quelle, um sich in ASP.NET einzuarbeiten, wäre bspw.:

      Übersicht über ASP.NET

    Wenn Du zukunftsorientiert arbeiten möchtest, wäre ASP.NET Core allerdings sinnvoller. Bis auf den Namen gibt es da allerdings nicht viele Gemeinsamkeiten, ein Umstieg ist daher doch mit einer steilen Lernkurve versehen.

      Einführung in ASP.NET Core

    Für Grundlagen in HTML, JavaScript, ... schau mal hier:

      W3Schools - HTML5 Tutorial

      W3Schools - JavaScript Tutorial


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Dienstag, 4. Dezember 2018 16:49
    Moderator