myGully.com

myGully.com (https://mygully.com/index.php)
-   Entwicklung & Programmierung (https://mygully.com/forumdisplay.php?f=72)
-   -   ASP.Net RadioButtonList SelectedIndexChanged in Masterseite lädt nach Contentseite (https://mygully.com/showthread.php?t=3663422)

HammerRei 26.02.15 13:03

ASP.Net RadioButtonList SelectedIndexChanged in Masterseite lädt nach Contentseite
 
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














HammerRei 26.02.15 15:10

Es gibt die Lösung, in der Default.master.vb ein Redirect durchzuführen, allerdings ist das HTML-Literal txtValueA nach dem Reload unbefüllt.

Code:

default.master.aspx
<asp:Literal runat="server" EnableViewState="false" ID="txtValueA" /></a></p>
        <div id="borderless">
--------------------
default.master.vb
txtValueA.Text = abteilung
Response.Redirect("~/Content/Content")


HammerRei 04.03.15 13:09

Ich mache das gerade als Ferienjob und da vb.net nicht zu meinen Hauptprogrammiersprachen gehört und ich ASP.Net zum ersten Mal sehe, finde ich nicht, dass das so schlimm aussieht.

Dennoch würde ich mich über eine Erklärung für besseres Anwenden freuen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:24 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.