Hallo Zusammen!
Im Rahmen der Projektvorgaben programmiere ich ausschließlich in VB.Net und nicht in C#
Aufbau:
Meine aktuelle Seite besteht aus 2 MasterPages und 1 ContentPage
Site.master(1) > Default.master(2) > Content.aspx(3)
(Hinter jeder Seite befindet sich Code gleichnamig mit Anhang .vb)
Die 3-Schichtige Hierarchie deshalb, da ich neben der Site.master auch in Default.master navigieren möchte und es durch Codeauftrennung übersichtlicher wird.
Problem:
Nachdem man in Default.master(2) auf einen RadioButton(List) klickt, wird die Methode "AbteilungButtonList_SelectedIndexChanged" erst dann aufgerufen, nachdem meine Content.aspx(3) geladen wurde, allerdings möchte ich zuerst abhängig der Auswahl einen Wert in die aktuelle Session(Cookie) abspeichern, in der Content.aspx-Seite(3) rufe ich unter anderem Code auf, um Tabellen zu generieren, die abhängig vom ausgewählten Button-Wert sind.
Reihenfolge, wie Seiten geladen werden (Seiten asp.net):
Content.aspx, Default.master, Site.master
Ich habe den Code auf das nötigste komprimiert:
Zitat:
Site.master
Code:
<%@ Master Language="VB" AutoEventWireup="true" CodeFile="Site.master.vb" Inherits="SiteMaster" %>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<asp:PlaceHolder runat="server">
<%: S*****s.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>
</head>
<body>
<form runat="server">
<!-- Content -->
<div class="container body-content">
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
Default.master - darunterliegende Masterseite
Code:
<%@ Master Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="Default.master.vb" Inherits="Content_TableDummy" Codebehind="~/Default.master.vb"%>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<div class="jumbotron">
<p class="lead">Tabellenvorlage: <a><asp:Literal runat="server" EnableViewState="false" ID="txtValueA" /></a></p>
<div id="borderless">
<!-- AutoPostBack=True, sodass Code ausgeführt wird -->
<asp:RadioButtonList ID="AbteilungButtonList" runat="server" AutoPostBack="true" RepeatDirection="Horizontal" OnSelectedIndexChanged="AbteilungButtonList_SelectedIndexChanged" >
<asp:ListItem text="Montage" value="Montage"/>
<asp:ListItem text="Elektronik" Value="Elektronik"/>
<asp:ListItem text="Lack" Value="Lack"/>
<asp:ListItem text="Sensorik" Value="Sensorik"/>
<asp:ListItem text="Kunststoff" Value="Kunststoff"/>
</asp:RadioButtonList>
</div>
<div>
<!-- Tabellen -->
<asp:ContentPlaceHolder ID="TableContent" runat="server">
</asp:ContentPlaceHolder>
<!-- Tabelle Auswahllogik -->
</div>
</asp:Content>
Default.master.vb - Codebehind
Code:
Partial Class Content_TableDummy
Inherits System.Web.UI.MasterPage
Protected Sub AbteilungButtonList_SelectedIndexChanged(sender As Object, e As EventArgs)
' RadioButton Auswahl in Session abspeichern
Dim abteilung As String
abteilung = AbteilungButtonList.SelectedValue ' Test
System.Web.HttpContext.Current.Session("Abteilung") = abteilung ' Schreibe ausgewählten Wert in Session("Abteilung") '
End Sub
End Class
Content.aspx - Contentseite
Code:
<%@ Page Language="VB" MasterPageFile="~/Default.master" AutoEventWireup="false" CodeFile="Content_Default.aspx.vb" Inherits="Content_Default" %>
<%-- Add content controls here --%>
<asp:Content ID="Content1" ContentPlaceHolderID="TableContent" runat="server">
<!-- Tabellenvorlage -->
<asp:Table ID="overviewtable" CssClass="Status" runat="server">
</asp:Table>
</asp:Content>
Content.aspx.vb
Code:
Partial Class Content_Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim x As String
Dim stationAr As String(,)
' Erkennen, welcher ratio-button angeklickt wurde von Default.master - Session(Cookie)'
x = System.Web.HttpContext.Current.Session("Abteilung")
If Len(x) > 0 And Len(x) < 15 And Not InStr("Nothing", x) Then
' Falls Wert "Abteilung" belegt, schicke an RequestHandler.PushAbteilungChoice
Dim instance As New RequestHandler()
stationAr = instance.PushAbteilungChoice(x)
End If
' Anschließend Befülle Tabelle mit stationAr
End Sub
End Class
|