Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ASP.NET JavaScript Zugriff auf Sessionvariablen
impact_1991
myCSharp.de - Member



Dabei seit:
Beiträge: 44
Herkunft: Eichsfeld

Themenstarter:

ASP.NET JavaScript Zugriff auf Sessionvariablen

beantworten | zitieren | melden

Hallo zusammen,

aktuell bin ich dabei eine ASP.NET Anwendung zu entwickeln. An einer Stelle ist es nun erforderlich einen Wert in der Session über JS zu setzten. Wenn ich den JS Block direkt im aspx File hinterlege klappt alles super.
Sobald ich das Skript aber auslagere und anschließend einbinde funktioniert der Code nicht mehr bzw. es ändert sich das verhalten des Codes.



<%@ Master Language="C#" AutoEventWireup="true" CodeFile="SiteBaseSingle.master.cs" Inherits="SiteBaseSingle" ViewStateMode="Disabled" %>
<!DOCTYPE html>
<script language="javascript" type="text/javascript">
    function LogOut()
    {
        <%Session["TestValue"] = ""; %>';
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>
        <asp:ContentPlaceHolder ID="PageTitlePartPlaceHolder" runat="server"></asp:ContentPlaceHolder><%=" Test"%>
    </title>
    <link href="Content/Css/GGO.css" rel="stylesheet" />
    <script src="Content/Scripts/Helper.js"></script>
    <link href="Content/Css/GGO.css" rel="stylesheet" />
        
</head>
<body>
    <form id="form1" runat="server">
        <dx:ASPxGlobalEvents ID="GlobalEvents" runat="server">
            <ClientSideEvents ControlsInitialized="OnControlsInitialized" />
        </dx:ASPxGlobalEvents>
        
        <div class="header">
            <div class="contentBox">
                <uc:Header runat="server" ID="Header" />
            </div>
        </div>
        <div class="content" ">
            <div class="contentBox">
                <asp:ContentPlaceHolder ID="ContentPlaceHolder" runat="server">
                </asp:ContentPlaceHolder>
            </div>
        </div>

        <div class="footerHolder">
            <footer class="footer">
                <div class="contentBox">
                    <uc:Footer runat="server" ID="Footer" />
                </div>
            </footer>
        </div>
    </form>
</body>
</html>


Dieser Code setzt beim Aufruf die Sessionvariable zurück

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="SiteBaseSingle.master.cs" Inherits="SiteBaseSingle" ViewStateMode="Disabled" %>
<!DOCTYPE html>

<script src="Content/Scripts/testscript.js"></script>    
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>
        <asp:ContentPlaceHolder ID="PageTitlePartPlaceHolder" runat="server"></asp:ContentPlaceHolder><%=" - Test"%>
    </title>
    <link href="Content/Css/GGO.css" rel="stylesheet" />
    <script src="Content/Scripts/Helper.js"></script>
    <link href="Content/Css/GGO.css" rel="stylesheet" />
        
</head>
<body>
    <form id="form1" runat="server">
        <dx:ASPxGlobalEvents ID="GlobalEvents" runat="server">
            <ClientSideEvents ControlsInitialized="OnControlsInitialized" />
        </dx:ASPxGlobalEvents>
        
        <div class="header">
            <div class="contentBox">
                <uc:Header runat="server" ID="Header" />
            </div>
        </div>
        <div class="content" ">
            <div class="contentBox">
                <asp:ContentPlaceHolder ID="ContentPlaceHolder" runat="server">
                </asp:ContentPlaceHolder>
            </div>
        </div>

        <div class="footerHolder">
            <footer class="footer">
                <div class="contentBox">
                    <uc:Footer runat="server" ID="Footer" />
                </div>
            </footer>
        </div>
    </form>
</body>
</html>

    function LogOut()
    {
        <%Session["TestValue"] = ""; %>';
    }

Beim auslagern und debuggen dieses Codes, kann anscheinend nicht mehr auf die Variable zugegriffen werden. Beim ausgeben der Variable ist der Code als String zu sehen und nicht der Inhalt.

Kann mir jemand von euch erklären, warum es zu diesen Verhalten kommt.

Vielen Dank
Johannes
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16112

beantworten | zitieren | melden

Du arbeitest mit ASP.NET WebForms, dessen Weiterentwicklung vor rund 2 Jahren eingestellt wurde.
Sicher, dass Du auf dieser Basis jetzt eine neue Anwendung mit einer toten Technologie anfangen willst?

Der Nachfolger von ASP.NET WebForms ist ASP.NET MVC und der Nachfolger von ASP.NET MVC ist ASP.NET Core.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
impact_1991
myCSharp.de - Member



Dabei seit:
Beiträge: 44
Herkunft: Eichsfeld

Themenstarter:

beantworten | zitieren | melden

Hallo Abt,

ja ich weiß ASP.NET WebForms ist alt und nicht wirklich schön. Allerdings habe ich die Anwendung in ca. 10h geschrieben und dafür ist es noch ok. Eine Einarbeitung in neue Technologien hätte dafür einfach zu lange gedauert.
Das setzen der Session ist das einzige das noch fehlt. bzw. was ich gern noch geändert haben wollte.

Beste Grüße
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3430
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,

<%Session["TestValue"] = ""; %>';
Das kann nur innerhalb des aspx-Codes selbst funktionieren, da es einen serverseitigen Ausdruck enthält, der mit der Seite geparst und serverseitig(!) ausgewertet wird.
Wenn Du den Javascript-Code auslagerst in eine eigene Datei, wird diese so wie sie ist einfach an den Client ausgeliefert und der Ausdruck wird auf dem Server nicht ausgewertet.

Schau Dir dazu auch mal den Scriptcode an, der bei den beiden Varianten auf dem Client landet.

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
d.gierse
myCSharp.de - Member



Dabei seit:
Beiträge: 116

beantworten | zitieren | melden

Hallo,

also ich kann deinen Ansatz mit WebForms verstehen. Auch wenn es unter den Programmierern als veraltet gilt ist die Anfangshürde damit am geringsten und man kann das Projekt erstmal umsetzen.
Aber irgendwie sieht das so aus, als sollte das Login über eine Session-Variable gesteuert werden. Da würde ich dir von abraten, es gibt die fertige FormsAuthentication, die Dir da deutlich mehr bringt.

In deiner LogOut-Funktion hast Du das Problem, das Du versucht, serverseitigen Code direkt im JavaScript auszuführen. Das geht aber nicht. Du musst eine Anfrage an den Server senden, bei deren Verarbeitung die Session auch ändern kannst. Dies würde ich über einen Webservice (.asmx) machen und diesen per jQuery mit $.Ajax() aufrufen.
private Nachricht | Beiträge des Benutzers