Clientzugehörige Variablen (Visual Studio)
-
Hallo liebe Gemeinde,
ich mache zur Zeit meine ersten Versuche mit Webseiten in Visual Studio.
Ein kleines "Hello World" soll ein ImageButton sein. Wenn man auf ihn raufdrückt soll sich das Bild ändern.
In VS2010 gibt es eine vorgefertigte Webseite (auf der man sich registrieren und anmelden kann und eine kleine Navigation hat). Auf dieser Seite möchte ich mein Hello World realisieren.
public partial class _Default : System.Web.UI.Page { bool i= false; protected void Page_Load(object sender, EventArgs e) { } protected void ImageButton1_Click(object sender, ImageClickEventArgs e) { Label1.Text = ImageButton1.ImageUrl; if (i) ImageButton1.ImageUrl = "~/Images/bmm.jpg"; else ImageButton1.ImageUrl = "~/Images/gmm.jpg"; i = !i; } }
Im Gegensatz zum "klassischen" C# merkt sich das Programm die Variable i nicht. Vermutlich müssen die Variablen dem Benutzer / der IP Adresse des Clienten zugeordnet werden.
Kann mir jemand sagen wie das geht oder ein Stichwort oder Link geben???
Vielen Dank und Grüße!
Daniel
-
Hallo,
das Objekt wird für jeden Aufruf neu erzeugt, also verhält es sich wie 'klassisches C#'.
Aufruf-übergreifend Sachen speichern, lässt sich auf mehrere Arten (hängt z.B. davon ab, wie lange gespeichert werden soll).
Hier bietet sich die Session an, was auch deine Google-Stichwörter sind: aspnet, Session.Gruß,
Jockel
-
Vielen Dank!!!
-
Eine Frage hätt ich da noch...
ich möchte ein mehrdimensionales Array aus ImageButtons erstellen.
Dazu folgenden Code:
public partial class _Default : System.Web.UI.Page { private ImageButton[,] ibs = new ImageButton[6, 7]; protected void Page_Load(object sender, EventArgs e) { } private void InitializeImageButtons() { for (int zeile = 0; zeile < ibs.GetLength(0); zeile++) for (int spalte = 0; spalte < ibs.GetLength(1); spalte++) { ibs[zeile, spalte] = new ImageButton(); ibs[zeile, spalte].BorderStyle = BorderStyle.None; ibs[zeile, spalte].ImageUrl = "~/Images/gmm.jpg"; this.Controls.Add(ibs[zeile, spalte]); } } protected void Button1_Click(object sender, EventArgs e) { InitializeImageButtons(); } }
Dies kann ohne Fehlermeldung gestartet werden. Wenn ich jedoch auf den Button drücke erscheint im Browser die Fehlermeldung
Das Steuerelement ctl01 vom Typ ImageButton muss in einem Formulartag mit runat=server positioniert werden.
Dies sieht in der Default.aspx so aus (ganz unten hab ich das Steuerelement hinzugefügt):
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <h2> Willkommen bei ASP.NET. </h2> <p> Weitere Informationen zu ASP.NET finden Sie auf <a href="http://www.asp.net" title="ASP.NET-Website">www.asp.net</a>. </p> <p> <a href="http://go.microsoft.com/fwlink/?LinkID=152368" title="MSDN-ASP.NET-Dokumente">Dokumentation finden Sie auch unter ASP.NET bei MSDN</a>. </p> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:Button ID="ctl01" runat="server" /> </asp:Content>
Wenn ich dieses Programm starte und den Button drücke kommt leider die gleiche Fehlermeldung. Muss dieser Code woanders stehen?
-
Ich seh gerade, dass es natürlich
<asp:Button ID="ctl01" runat="server" />
heißen muss. Ändert aber nicht an der Fehlermeldung.
-
PlaceHolder ist das Schlüsselwort.