Laden...

Wert in eine Session übertragen

Erstellt von Dolce vor 3 Jahren Letzter Beitrag vor 3 Jahren 328 Views
D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 3 Jahren
Wert in eine Session übertragen

Hallo Community

Ich trete seit geraumer Zeit auf derselben Stelle.
Ich will einen ausgelesenen Wert über eine JavaScript Funktion in eine Session übergeben, um diese dann später auslesen zu können.

Im unten aufgeführten Beispiel, kann ich einen Wert an eine Session übergeben:


 <% var text1= "Welcome Mamu";%>
            <%Session["status"] =text1;%>
            var session_value = '<%=Session["status"]%>';
            alert(session_value);

Wenn ich aber einen mit JavaScript ermittelten Wert in die Session überführen möchte, klappt dies leider nicht...


            var text1= "Welcome Mamu";
            <%Session["status"] = text1;%>
            var session_value = '<%=Session["status"]%>';
            alert(session_value);


var text1 = "Welcome Mamu";
            <%Session["status"] = %> text1.toString()  <%;%>;
            var session_value = '<%=Session["status"]%>';
            alert(session_value);

Kann mir wer einen Hinweis oder einen Link anbieten, mit welchem ich auf eine Lösung kommen kann?

Nachtrag:
Der untenstehende Aufruf liefert mir beim auslesen der Session in der .NET Klasse nur " + text1 +"


var text1 = "Welcome Mamu";
            '<%Session["status"] = "' + text1 + '"; %>';
            var session_value = '<%=Session["status"]%>';
            alert(session_value);

Besten Dank und Gruss
Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

T
2.222 Beiträge seit 2008
vor 3 Jahren

Das Problem ist, dass der Code in <% %> auch statisch umgewandelt wird.
Entsprechend kannst du auf diesen Weg nur vom Server zu JS Daten liefern.
Umgekehrt musst du einen anderen Web nehmen.

Der Code sieht sehr nach ASP .NET Web Forms aus, was übrigens schon abgekündigt und eine Tote Technik ist.
Wenn möglich steig auf eine neuere Technik wie Blazor um.

Wir machen das in einem sehr alten Projekt z.B. über ScriptServices.
Diesen kann man dann in Javascript aufrufen und die Daten asynchron abrufen lassen.
Ebenfalls ginge auch eine WebAPI, die du dann direkt aus JS aufrufen und den Response anzeigen könntest.
Wäre auch ein besserer Ansatz als noch einen Script Service aufzusetzen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 3 Jahren

Hallo T-Virus

Danke Dir für diese wertvolle Antwort.

Ja die Applikation ist/wird mit ASP.NET Web-Forms umgesetzt. Und ja ich habe schon seit geraumer Zeit keine Web-Applikationen mehr geschrieben. Wenn man dann schnell was braucht, orientiert man sich dann schnell am alt bekannten.

Dann werde ich mir ein paar Tutorials über Blazor reinziehen...

Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

16.828 Beiträge seit 2008
vor 3 Jahren

Nicht falsch verstehen, Blazor ist kein Ersatz für WebForms.
Blazor ist eine Engine in der ASP.NET Core Runtime für das Frontend.

Wenn Du also Deine Anwendung modernisieren willst, dann solltest Du auf ASP.NET Core migrieren.
Blazor ist dann nur eine Umsetzung für das Frontend; was aber das Grundproblem des Themas nicht löst.
Ja, wird Zeit, dass Du die fast 10 Jahre bereits abgekündigte WebForms Sache mal angehst; aber wegen nem Session-Wert eine ganze Anwendung zu migrieren, das musst auch erstmal wohl begründen können 😉

Das Problem ist, dass Du aus dem Frontend einen Wert auf dem Server ändern willst.
Und das funktioniert in der Form, wie Du es hier machen willst, auch in Blazor nicht (so einfach).
HTTP ist ein verbindungsloses Protokoll und Du kannst nichts auf dem Server ändern, wenn Du Code ohne Verbindung zum Server im Browser ausführst.
Das ging nie, und das wird auch nie mit HTTP alleine funktionieren.

Eine Session existiert nur auf dem Server, niemals auf dem Client.
Willst Du daher einen Sessionwert ändern, dann musst Du das mit einem Request gegen den Server tun. Das kannst Du niemals direkt mit JavaScript auf dem Client setzen; nicht mti WebForms, nicht mit Angular, nicht mit Blazor.