none
mit html img ein Ereignis im Codebehind auslösen RRS feed

  • Frage

  • Hallo,
    ich möchte folgendes bewärkställigen.

    Mit einem Html Image eine C#-Methode aufrufen

    <img src="bild.png"runat="server" id="test" name="test" onClick="CSharpMethodeAufrufen"/>

    public void CSharpMethodeAufrufen(object sender, EventArgs e)
    {
      // ...
    }

    Wäre für jede Hilfe sehr sehr dankbar.
    Lg String.Rise

    Freitag, 11. Februar 2011 16:23

Antworten

  • Hi,

    Ich möchte dadurch einen onMouseOver und Out effekt bewärkställigen. Der Efefkt funktioniert zwar aber leider funkctioniert das nicht so wie ich mir das vorstelle. Beim Klick wird zwar die onClick Methode vom asp-ImageButton aufgerufen jedoch kann ich die Eingaben nicht mehr prüfen da die Indedx.aspx vorher Neu (nicht PostBack) vom aHref aufgerufen wird.

    Falls eine Möglichkeit geben sollte ein asp.ImageButton einen onMouseOver und Out Effekt zu verpassen und gleichzeitig die Eingaben nicht zu verliert, dann wäre ich sehr dankbar für einen besseren Vorschlag.

    irgendwie hab ich grad das Gefühl, dass Du irgendwas doch ziemlich "verkomplizierst" :)

    Solche MouseOver (hover) Effekte löst man heute mit CSS, nicht mehr mit JavaScript.

    Du brauchst bei einem ImageButton keinen Hyperlink drumrum, da der ImageButton bei Klick einen PostBack auslöst.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
      <title>Test</title>
      <style type="text/css">
      .ImageButton
      {
        width      : 75px;
        height     : 25px;
        background-image: url(/images/Button.png);
      }
      .ImageButton:hover
      {
        background-image: url(/images/Button.Hover.png);
      }
      </style>
    </head>
    <body>
    <form id="form1" runat="server">
      <asp:ImageButton ID="ImageButton" runat="server" CssClass="ImageButton" ImageUrl="~/Images/Transparent.png" ... />
    </form>
    </body>
    </html>
    
    

    Wichtig dabei ist, dass die Grafik bei ImageUrl transparent ist, damit die Grafiken, die bei background-image angegeben sind, auch zu sehen sind.

    Ansonsten sollte das nun genauso funktionieren, wie Du es brauchst.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert String.Rise Donnerstag, 10. März 2011 14:19
    Donnerstag, 10. März 2011 12:33
    Moderator

Alle Antworten

  • Hi,
    Mit einem Html Image eine C#-Methode aufrufen
    <img src="bild.png"runat="server" id="test" name="test" onClick="CSharpMethodeAufrufen"/>

    kannst Du nicht direkt. Das onclick Event eines <img /> Tags ist rein clienseitig. Du müsstest in dem Moment dann - je nach Bedarf - einen Postback auslösen oder bspw. per Ajax eine Webservicemethode aufrufen.

    D.h. ins onclick kommt der Aufruf einer clientseitigen JavaScript Funktion, diese führt dann die Aktion durch, die dann letztendlich einen Request zum Server ausführt und dann kannst Du anhand der Übergabeparameter dann im Code deine Funktion aufrufen.

    Einfacher geht es mit einem <asp:ImageButton /> Control. Das sieht im Endeffekt für den User genauso aus, damit kannst Du das aber einfacher haben (im Hintergrund wird das, was Du bei einem Image selbst machen musst, halt automatisch durchgeführt).

    ---

    Was genau willst Du eigentlich beim Klick machen? Evtl. gibt es ja noch alternative Lösungen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 11. Februar 2011 18:09
    Moderator
  • Hallo Stefan,

    danke vorerst für deine Antwort. Ich verwende stadt Buttons, Images. Da das Design über einer Externen CSS Datei, bei diesem Control am besten aussieht.
    Mit einem ImageButton bzw. Button habe ich das Problem das der Rahmen (border:0px; border-width:0px usw) nicht ganz weg geht.

    Lg

    Freitag, 11. Februar 2011 18:34
  • Hi,
    Mit einem ImageButton bzw. Button habe ich das Problem das der Rahmen (border:0px; border-width:0px usw) nicht ganz weg geht.

    was sollte da anders sein? Welchen Rahmen meinst Du?

    Zeig doch mal bitte ein Beispiel des relevanten HTML und CSS Teils sowie ggfs. einen Screenshot, wie es aussieht und einen, wie es aussehen sollte.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 11. Februar 2011 18:49
    Moderator
  • Halllo S.

    Ich habe das jetzt mit dem asp-ImageButton probiert.

    <a href="Index.aspx" onmouseover="btnLogInIndex2.ImageUrl='Resources/img1.png'" onmouseout="btnLogInIndex2.ImageUrl='Resources/img2.png'" >
    <asp:ImageButton ID="btnLogInIndex2" runat="server" CssClass="Button4LogIn" BorderWidth="0" Width="75" Height="25"
    onclick="btnLogInIndex_Click" />
    </a>


    Ich möchte dadurch einen onMouseOver und Out effekt bewärkställigen. Der Efefkt funktioniert zwar aber leider funkctioniert das nicht so wie ich mir das vorstelle. Beim Klick wird zwar die onClick Methode vom asp-ImageButton aufgerufen jedoch kann ich die Eingaben nicht mehr prüfen da die Indedx.aspx vorher Neu (nicht PostBack) vom aHref aufgerufen wird.

    Falls eine Möglichkeit geben sollte ein asp.ImageButton einen onMouseOver und Out Effekt zu verpassen und gleichzeitig die Eingaben nicht zu verliert, dann wäre ich sehr dankbar für einen besseren Vorschlag.


    Lg

    Donnerstag, 10. März 2011 10:20
  • Hi,

    Ich möchte dadurch einen onMouseOver und Out effekt bewärkställigen. Der Efefkt funktioniert zwar aber leider funkctioniert das nicht so wie ich mir das vorstelle. Beim Klick wird zwar die onClick Methode vom asp-ImageButton aufgerufen jedoch kann ich die Eingaben nicht mehr prüfen da die Indedx.aspx vorher Neu (nicht PostBack) vom aHref aufgerufen wird.

    Falls eine Möglichkeit geben sollte ein asp.ImageButton einen onMouseOver und Out Effekt zu verpassen und gleichzeitig die Eingaben nicht zu verliert, dann wäre ich sehr dankbar für einen besseren Vorschlag.

    irgendwie hab ich grad das Gefühl, dass Du irgendwas doch ziemlich "verkomplizierst" :)

    Solche MouseOver (hover) Effekte löst man heute mit CSS, nicht mehr mit JavaScript.

    Du brauchst bei einem ImageButton keinen Hyperlink drumrum, da der ImageButton bei Klick einen PostBack auslöst.

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
      <title>Test</title>
      <style type="text/css">
      .ImageButton
      {
        width      : 75px;
        height     : 25px;
        background-image: url(/images/Button.png);
      }
      .ImageButton:hover
      {
        background-image: url(/images/Button.Hover.png);
      }
      </style>
    </head>
    <body>
    <form id="form1" runat="server">
      <asp:ImageButton ID="ImageButton" runat="server" CssClass="ImageButton" ImageUrl="~/Images/Transparent.png" ... />
    </form>
    </body>
    </html>
    
    

    Wichtig dabei ist, dass die Grafik bei ImageUrl transparent ist, damit die Grafiken, die bei background-image angegeben sind, auch zu sehen sind.

    Ansonsten sollte das nun genauso funktionieren, wie Du es brauchst.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert String.Rise Donnerstag, 10. März 2011 14:19
    Donnerstag, 10. März 2011 12:33
    Moderator
  • Hallo,

    danke vorerst für deinen Snipp. Ich wusste nicht das man asp-controls mittels css Hover effekte zuweisen kann.
    Daher auch mein Versuch mit dem Hyperlink.
    Jedenfalls Danke für deine Antwort. Werde es dann mal probieren

    Lg
    String.Rise

    Donnerstag, 10. März 2011 13:37