nächste etwas blödere frage zu .net/asp

hallo zusammen,

folgendes…

ich hab eine asp-seite mit label und button.
beim klick auf den button wird etwas in das label geschrieben.
beim weiteren klick wird dem label text hinzugefügt
und beim weiteren klick, wieder, usw. etc…

dazu habe ich eine variable deklariert die ich im button-klick-ereignis abhandle, und immer +1 zählen lasse
bsp.

if i = 0 then
label.text = „hallo“
elseif i = 1 then
label1.text = „hallo hallo“
elseif i = 2 then
label1.text = „hallo hallo hallo“
end if

i = i + 1


das problem ist, das bei jedem button-klick die variable i wieder den wert 0 hat :frowning:
wie umgeht, trickselt man sowas – oder bin ich generell zu blöd?

vielen dank für eure tips

viele grüße

rasta

hi

guck dir in der hilfe die asp.net themen Session, Application und Cache an. Es ist normal dass die Variable diesen wert verliert…

hier eine kleine demo wie es gehen könnte

 Private Sub Page\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 i = Session.Item("myI")
 End Sub

 Dim i As Integer

 Private Sub Button1\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 i = i + 1
 Button1.Text = i.ToString()
 Session.Item("myI") = i
 End Sub

gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hallo guiseppe,

vielen dank für deine antwort – sehr gut :wink:))

nur noch ne blde frage – bin ahnungslos

irgendwoher weis ich, das sich die session-variable oder id- oder was weis ich schlag mich tot ändert-
ist das so?

nicht das ich in meine session-variablen schreibe und irgendwann sind die werte weg weil sich die session geändert hat

viele grüße

rasta

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi

wie es bei asp.net ist weiss ich nicht so genau… vermutlich aber wie bei asp. und da ist es so dass die session nach einem timeout (irrtum vorbehalten 15min) verlohren ging.
wenn dir das nicht genügt dann schreibe deine variable in ein cookie oder so…

gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi guiseppe,

vielen dank für deine antwort—
wie gehst du denn persönlich vor, wenn du eine asp-website ertellst? begnügst du dich mit den session-variablen oder schreibst du in ein cookie?
oder von fall zu fall?

viele grüße

rasta

hi

wie es bei asp.net ist weiss ich nicht so genau… vermutlich
aber wie bei asp. und da ist es so dass die session nach einem
timeout (irrtum vorbehalten 15min) verlohren ging.
wenn dir das nicht genügt dann schreibe deine variable in ein
cookie oder so…

gruss

das ist von fall verschieden. eben wie schon gesagt mit asp.net hab ich mich noch nicht gross befasst. bei asp hab ich entweder session variablen gebraucht, cookies oder hidden fields.

gruss

Hi Rasta

Ich würde generell sagen solange du nicht informationen brauchst wie zum beispiel das wie vielte mal der gleiche benutzer auf deiner seite ist, würd ich grundsätzlich cookies nicht verwenden. (ok man könnte solche informationen in einer datenbank ablegen nebst anderen statistic informatione). Aber generell eher nicht verwenden da leute cookies ja zum fressen gern haben :smile:

Ich würde deine variablen in der Sessen ablegen. Und ich würde dir auch raten einen sessenwraper zu machen, so läufst du nicht gefahr das du die keys falsch schreibst oder bei jedem aufruf nachschauen musst. bsp siehe unten.

public class SessState
 {
 public SessState(){ }

 public static SqlConnection DBConnection
 {
 get{return (SqlConnection)HttpContext.Current.Session["sql.connection"];}
 set{ HttpContext.Current.Session["sql.connection"] = value; }
 }

 public static int UserId
 {
 get{return (int)HttpContext.Current.Session["user.id"];}
 set{ HttpContext.Current.Session["user.id"] = value; }
 }

 }

 }

Somit kannst du nur noch mit intellisens deine klasse anvisieren und etwas wie folgt machen

this.myConnection = SessState.DBConnection;

grüschen
eldonti

tja alles gut und recht… aber wenn ich mich nicht täusche benötigt man für sessions sowieso cookies… nur werden diese von ASP selber verwaltet… und man merkt nichts davon.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Also wenn ich der MSDN glauben schenke was ich eigentlich auch tue dann gilt folgendes: (und ergo cookies sind nicht benötigt wenn man nicht will!)

HTTP is a stateless protocol, which means that it does not automatically indicate whether a sequence of requests is all from the same client or even whether a single browser instance is still actively viewing a page or site. As a result, building Web applications that need to maintain some cross-request state information (shopping carts, data scrolling, and so on) can be extremely challenging without additional infrastructure help.

ASP.NET provides the following support for sessions:

A session-state facility that is easy to use, familiar to ASP developers, and consistent with other .NET Framework APIs.
A reliable session-state facility that can survive Internet Information Services (IIS) restarts and worker-process restarts without losing session data.
A scalable session-state facility that can be used in both Web farm (multicomputer) and Web garden (multiprocess) scenarios and that enables administrators to allocate more processors to a Web application to improve its scalability.
A session-state facility that works with browsers that do not support HTTP cookies.
A throughput equivalent to that of ASP (or better) for core session-state scenarios (50/50 read/write when putting items into shopping carts, modifying last page visited, validating credit card details, and so on).

vielen dank für eure antworten.
frohes neues jahr wünsch ich allerseits :wink:

viele grüße

rasta