Avatar billede Kim Neesgaard Seniormester
15. september 2005 - 19:12 Der er 6 kommentarer og
1 løsning

Samspil mellem .aspx og .ascx filer

Et formodentlig simpelt spørgsmål:

Jeg har en .aspx fil med en placeholder i og jeg bruger en sessionvariabel til at styre, hvilken .ascx fil, der skal vises i placeholderen. Dette virker fint med visning af den første .ascx fil, men når denne .ascx fil er kørt fædig, mangler jeg en måde at kalde .aspx filen på via en knap (og ikke som tag), således at en ny .ascx fil kan vises i placeholderen. I min opstilling 'dør' den efter visning af første .ascx fil.
Avatar billede snepnet Nybegynder
16. september 2005 - 00:07 #1
kan du ikke vise lidt kode, saa vi kan se hvad du goer nu?
mvh
Avatar billede Kim Neesgaard Seniormester
16. september 2005 - 09:32 #2
Jo - min .aspx ser sådan ud:

<%@ Page Language="VB" %>
<%@ import Namespace="System.Web.UI.WebControls" %>
<script runat="server">

    Sub Page_Load(sender As Object, e As EventArgs)
   
    If not Page.IsPostback then
        Session("Side") = "PWTjek"
        Session("Sprog") = ""
        Session("Info") = ""
        Session("Kode") = ""
    End If
   
    lblInfo.Text = Session("Info")
    Kode.Text = Session("Kode")
   
    Select Case Session("Side")
      Case "PWTjek":
        PHMain.controls.add(LoadControl("PWTjek.ascx"))
      Case "PWTjekFejl":
        PHMain.controls.add(LoadControl("xx.ascx"))
      Case "Ordliste":
        PHMain.controls.add(LoadControl("Ordliste.ascx"))
      Case Else
        lblInfo.Text = Session("Info")
    End Select
   
    End Sub

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <p>
            <asp:Image id="Image1" runat="server" ImageUrl="Logo.jpg"></asp:Image>
        </p>
        <p>
            <asp:PlaceHolder id="PHMain" runat="server"></asp:PlaceHolder>
        </p>
        <p>
            <asp:Label id="Label1" runat="server" font-names="Arial" font-size="XX-Small" text="Tilegnet Sprogbroens engelskelever på kursus E 429"></asp:Label>
        </p>
        <p>
            <asp:Label id="lblInfo" runat="server" font-names="Arial" font-bold="True" forecolor="Red"></asp:Label>
        </p>
        <p>
            <asp:TextBox id="Kode" runat="server" Height="2px" Width="477px"></asp:TextBox>
        </p>
        <!-- Insert content here -->
    </form>
</body>
</html>

og den kalder .ascx:

<%@ Control Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Oledb" %>
<script runat="server">

    ' Insert user control code here
        '
    Sub Page_Load(sender As Object, e As EventArgs)
   
      Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.mappath("/data/A-Nees.mdb") & ";")
      objConn.Open()
      objConn.Close
   
    End Sub
   
    Sub btnNext_Click(sender As Object, e As EventArgs)
   
    If DDLBruger.SelectedItem.Value = txtPW.Text Then
      Session("Side") = "Ordliste"
    Else
      Session("Side") = ""
      Session("Info") = "Bruger/password findes ikke"
    End If
   
    End Sub

</script>
<p>
    <asp:Label id="Label1" runat="server" text="Indtast brugernavn og password:" font-size="X-Small" font-names="Arial" font-bold="True"></asp:Label>
</p>
<p>
    <asp:DropDownList id="DDLBruger" runat="server" Font-Names="Arial" Font-Size="X-Small">
        <asp:ListItem Value="IngenValgt" Selected="True">V&#230;lg</asp:ListItem>
        <asp:ListItem Value="KimN">Kim</asp:ListItem>
        <asp:ListItem Value="DoEs">Dorthe</asp:ListItem>
    </asp:DropDownList>
</p>
<p>
    <asp:TextBox id="txtPW" runat="server" Font-Names="Arial" Font-Size="X-Small" TextMode="Password"></asp:TextBox>
</p>
<p>
    <asp:Label id="Label2" runat="server" text="Vælg sprog:" font-size="X-Small" font-names="Arial" font-bold="True"></asp:Label>
</p>
<p>
    <asp:DropDownList id="DDLSprog" runat="server" Font-Names="Arial" Font-Size="X-Small">
        <asp:ListItem Value="IntetValgt" Selected="True">V&#230;lg</asp:ListItem>
        <asp:ListItem Value="GB">English</asp:ListItem>
    </asp:DropDownList>
</p>
<p>
    <asp:Button id="btnNext" onclick="btnNext_Click" runat="server" Text="Næste"></asp:Button>
</p>
Avatar billede snepnet Nybegynder
19. september 2005 - 16:07 #3
dine eventhandlers kører efter page_load - så ovenstående vil ikke komme til at gå.
du kan eventuelt (hvis det er en acceptabel løsning) istedet gøre sådan her i din handler:

f.eks.:
Reponse.Redirect("dinside.aspx?side=somepage");

og så kan du så lave en switch på din querystring istedet:

select case Request.QueryString("side") ...

mvh
Avatar billede Kim Neesgaard Seniormester
23. september 2005 - 14:27 #4
Tak - virker fint!

Et spørgsmål mere: kan man godt blive ved med at bruge Placeholder.controls.add(LoadControl("x.ascx") igen og igen, mao. skal man unloade på en eller anden måde før man loader en ny .ascx eller finder .NET selv ud af det?
Avatar billede snepnet Nybegynder
23. september 2005 - 15:23 #5
Placeholder.controls.add(LoadControl("x.ascx") kan du køre lige så mange gange du vil i løbet af et request, og lige så snart du starter et nyt request, "er tavlen visket ren". De kontroller du har indsat dynamisk bliver ikke husket pr. automatik.
mvh
Avatar billede Kim Neesgaard Seniormester
24. september 2005 - 18:59 #6
Mange tak (endnu en gang) - vil du kaste et 'svar'?
Avatar billede snepnet Nybegynder
24. september 2005 - 19:11 #7
kommer her :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester