Avatar billede want2learn Nybegynder
30. november 2006 - 21:59 Der er 15 kommentarer og
3 løsninger

if then else i .NET VB

Hej

Jeg er ved at lege lidt med Asp.Net VB er van' til Asp 3.0.

jeg har 2 sider PT.
Site.Master (grund site)
default.aspx (som pt kun henter min master ind)
og det virker mit spm er nu.

i asp 3.0 der kunne man lave et link som evt.
www.domæne.dk/default.asp?page=tester

så kunne man have en if kode der kiggede på page og hvis page var evt = tester så viste den noget, og var det = noget andet så viste den det.

som evt ved:
<%
If page = "" Then
writeTest1Page()
ElseIf page = "Test2" Then
writeTest2Page()
ElseIf page = "Test3" Then
writeTest3Page()
End If
%>

Mit spm er nu hvis jeg på min master har en TD med en div og en contentplaceholder som dette:

  <td rowspan="24" colspan="10">
    <div class="Main_Text">
    <asp:contentplaceholder id="MainText" runat="server">

    </asp:contentplaceholder>
    </div>
  </td>

hvordan kan jeg så lave noget som kigger på page i et link og hvis page er = ole så skriver den noget om ole og ikke om Thomas i min TD og skal jeg lave det i min master eller skal jeg lave en codebehind side og hvordan kan jeg starte på den så hvis page=ole så skriver den "Dette er lidt om ole" !?
Avatar billede snepnet Nybegynder
30. november 2006 - 23:56 #1
Well... Det er hensigten, at du laver dine sidespecifikke ting i dine contentpages (du kan angive alle de contentplaceholders du vil, og også give dem default content).
Mvh
Avatar billede innercitydk Nybegynder
01. december 2006 - 10:18 #2
Jeg ville gøre følgende:

Du har en side med een content placeholder. når siden loader er der 2 scenarier. 1) Siden har ikke en Querystring. 2) Siden har en Querystring og indhold skal vises/behandles derefter.

Lav f.eks 3 paneler (kan også bare være labels eller andre controls) og fyld dem med labels, tekstbokse, eller andet der måtte være behov for.

I page load på samme side (ikke din master) skjuler du alle paneler:

panel1.Visible = False
panel2.Visible = False
panel3.Visible = False

Efter panelerne er skjult skal der så testes på hvilken af dem der skal vises:

Dim pageString As String = "Def"
If Not (Request.QueryString("Page") = "") Then
pageString = Request.QueryString("Page").ToString
End If
If pageString = "Def" Then
panel1.Visible = False
panel2.Visible = False
panel3.Visible = False
Else
If pageString = "Page1" Then
  panel1.Visible = True
  panel2.Visible = False
  panel3.Visible = False
Else
If pageString = "Page2" Then
  panel1.Visible = False
  panel2.Visible = True
  panel3.Visible = False
Else
If pageString = "Page3" Then
  panel1.Visible = False
  panel2.Visible = False
  panel3.Visible = True
End If
End If

Hvis du forstår princippet i det er det let at udvide til f.eks at hente data i en database afhængigt af hvilken streng der er med i adresse kaldet.

Vh Nicki
Avatar billede innercitydk Nybegynder
01. december 2006 - 10:26 #3
Der er en fejl i koden, den skulle selvfølgelig være:

Dim pageString As String = "Def"
If Not (Request.QueryString("Page").ToString = "") Then
pageString = Request.QueryString("Page").ToString
End If
If pageString = "Def" Then
panel1.visible = False
panel2.visible = False
panel3.visible = False
Else
If pageString = "Page1" Then
  panel1.visible = True
  panel2.visible = False
  panel3.visible = False
Else
  If pageString = "Page2" Then
    panel1.visible = False
    panel2.visible = True
    panel3.visible = False
  Else
    If pageString = "Page3" Then
      panel1.visible = False
      panel2.visible = False
      panel3.visible = True
    End If
  End If
End If
End If


Hvis siden kaldes således: http://side.aspx , skjules alle paneler.
Hvis siden kaldes således: http://side.aspx?Page=Page1 , eller Page2 eller Page3, så vises panelet.

Vh Nicki
Avatar billede want2learn Nybegynder
01. december 2006 - 20:53 #4
@Innercitydk

Mange tak...kigger lige på det lørdag har dog et spm. hvor sætter jeg så:
panel1.Visible = "Detter er en lille tekst om Ole" så den skriver det når Panel1 vises og hvad med var det er "Def" som skal vises. !?
Avatar billede innercitydk Nybegynder
02. december 2006 - 08:47 #5
Der hvor du initierer dine paneler kan du også fylde hvad som helst i dem. F.eks kan du bare fylde almindelig tekst i dem. Gå til designereren is VS, eller manipuler koden direkte. f.eks:

<asp:Panel ID="Panel1" runat="server">Dette er en lille tekst om Ole</asp:Panel>
<asp:Panel ID="Panel2" runat="server">Dette er en lille tekst om Hans</asp:Panel>
<asp:Panel ID="Panel3" runat="server">Dette er en lille tekst om Lotte</asp:Panel>

"Def" (default) gør ikke andet end at skjule alle panelerne. Du kan jo lege lidt med at indsætte et par link buttons eller lignende der så kalder en kodestump i codebehind filen, spom så henholdvis skjuler eller viser panelerne. Det smarte ved at bruge et panel, eller en contentplaceholder eller lignende er at man kan fylde dem med hvad som helst. Du kan fylde dem med tekstbokse, labels, buttons osv osv. Og så kan man jo skjule alle elementer bare ved at sætte .Visible=false. Alternativet var at man for hver control (labels, buttons etc.) skulle skjule dem enkeltvis.

Vh
Avatar billede want2learn Nybegynder
02. december 2006 - 15:36 #6
skal min Code_behind ikke ligne dette eller har jeg lavet en fejl !? den siger noget om Sub og Dim

Imports Microsoft.VisualBasic

Partial Class CodeBehind_default_aspx
    Inherits System.Web.UI.Page

    Protected Sub Dim pageString As String = "Def"
        If Not (Request.QueryString("Page").ToString = "") Then
            pageString = Request.QueryString("Page").ToString
        End If
        If pageString = "Def" Then
            panel1.visible = False
            panel2.visible = False
            panel3.visible = False
        Else
            If pageString = "Page1" Then
                panel1.visible = True
                panel2.visible = False
                panel3.visible = False
            Else
                If pageString = "Page2" Then
                    panel1.visible = False
                    panel2.visible = True
                    panel3.visible = False
                Else
                    If pageString = "Page3" Then
                        panel1.visible = False
                        panel2.visible = False
                        panel3.visible = True
                    End If
                End If
            End If
        End If
    End Sub
End Class
Avatar billede want2learn Nybegynder
02. december 2006 - 15:42 #7
rettelse til det ovenover

Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

        Dim pageString As String = "Def"
        If Not (Request.QueryString("Page").ToString = "") Then
            pageString = Request.QueryString("Page").ToString
        End If

OSV. og så kommer denne fejl.
Content controls have to be top-level controls in a content page or a nested master page that references a master page.
Avatar billede innercitydk Nybegynder
02. december 2006 - 15:47 #8
Sry.. skulle have været:

If Not (Request.QueryString("Page") Is Nothing) Then ...
Avatar billede innercitydk Nybegynder
02. december 2006 - 15:48 #9
hmm ved ikke lige med den fejl du får
Avatar billede want2learn Nybegynder
02. december 2006 - 18:50 #10
Jeg startede forfra i VWD2005EE og har nu fået den til at vise de asp panel
Men hvis siden er
http://localhost:4217/WebSite1/Default.aspx
så viser den alle de 3 Panel og hvis jeg laver den om til

http://localhost:4217/WebSite1/Default.aspx?Page=2
så viser den også alle sammen !??

har kørt en Error list i VWD2005EE og den finder nu ikke nogle fejl i det du har lavet den vil dog kun vise alle..


Default.aspx

<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="Untitled Page" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Panel ID="Panel1" runat="server">Dette er en lille tekst om Ole 1</asp:Panel>
<asp:Panel ID="Panel2" runat="server">Dette er en lille tekst om Hans 2</asp:Panel>
<asp:Panel ID="Panel3" runat="server">Dette er en lille tekst om Lotte 3</asp:Panel>
</asp:Content>


Default.aspx.vb

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

        Dim pageString As String = "Def"
        If Not (Request.QueryString("Page") Is Nothing) Then
            pageString = Request.QueryString("Page").ToString
        End If
        If pageString = "Def" Then
            Panel1.Visible = False
            Panel2.Visible = False
            Panel3.Visible = False
        Else
            If pageString = "Page1" Then
                Panel1.Visible = True
                Panel2.Visible = False
                Panel3.Visible = False
            Else
                If pageString = "Page2" Then
                    Panel1.Visible = False
                    Panel2.Visible = True
                    Panel3.Visible = False
                Else
                    If pageString = "Page3" Then
                        Panel1.Visible = False
                        Panel2.Visible = False
                        Panel3.Visible = True
                    End If
                End If
            End If
        End If
    End Sub
End Class
Avatar billede want2learn Nybegynder
02. december 2006 - 18:51 #11
Det skal dog siges at den viser dem det rigtige sted på min master men fejlen er nu kun at den viser alle 3 ligemeget hvad..
Avatar billede innercitydk Nybegynder
03. december 2006 - 10:44 #12
Det er fordi du som det første i pageload, inden alt andet, skal skjule alle dine paneler.

<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="Untitled Page" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Panel ID="Panel1" runat="server">Dette er en lille tekst om Ole 1</asp:Panel>
<asp:Panel ID="Panel2" runat="server">Dette er en lille tekst om Hans 2</asp:Panel>
<asp:Panel ID="Panel3" runat="server">Dette er en lille tekst om Lotte 3</asp:Panel>
</asp:Content>


Default.aspx.vb

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

Panel1.Visible = False
            Panel2.Visible = False
            Panel3.Visible = False

        Dim pageString As String = "Def"
        If Not (Request.QueryString("Page") Is Nothing) Then
            pageString = Request.QueryString("Page").ToString
        End If
        If pageString = "Def" Then
            Panel1.Visible = False
            Panel2.Visible = False
            Panel3.Visible = False
        Else
            If pageString = "Page1" Then
                Panel1.Visible = True
                Panel2.Visible = False
                Panel3.Visible = False
            Else
                If pageString = "Page2" Then
                    Panel1.Visible = False
                    Panel2.Visible = True
                    Panel3.Visible = False
                Else
                    If pageString = "Page3" Then
                        Panel1.Visible = False
                        Panel2.Visible = False
                        Panel3.Visible = True
                    End If
                End If
            End If
        End If
    End Sub
End Class
Avatar billede innercitydk Nybegynder
03. december 2006 - 10:45 #13
Alternativt kan du i html koden for Panel tagget sætte visible = false.
Avatar billede want2learn Nybegynder
03. december 2006 - 19:12 #14
Hmm går jeg som du har gjort i 03/12-2006 10:44:40 så vises alle stadigvæk og gør jeg som du skriver derefter omkring visible:

<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="Untitled Page" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Panel Visible="false" ID="Panel1" runat="server">Dette er en lille tekst om Ole 1</asp:Panel>
<asp:Panel Visible="false" ID="Panel2" runat="server">Dette er en lille tekst om Hans 2</asp:Panel>
<asp:Panel Visible="false" ID="Panel3" runat="server">Dette er en lille tekst om Lotte 3</asp:Panel>
</asp:Content>

så vises ingen men der vises heller ikke nogle hvis jeg skriver:
http://localhost:4014/WebSite1/Default.aspx?Page=Page1

hvor den jo skulle vise noget..
Avatar billede want2learn Nybegynder
04. december 2006 - 20:50 #15
har prøvet flere gange nu og ikke fået det til at virke og fået andre til at kigge på det som mener det ser rigtigt ud. har prøvet at debugge hele dagen men løste det selv som jeg gerne ville have det men det ligher meget det gamle men virker fint.

....:: Default.aspx ::....
<%@ Page Language="VB" MasterPageFile="~/MasterPage.master" Title="Untitled Page" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<%
    Dim pageString As String = "Def"
    If Not (Request.QueryString("Page") Is Nothing) Then
        pageString = Request.QueryString("Page").ToString
    End If
    If pageString = "Def" Then
        Response.Write("")
    Else
        If pageString = "Page1" Then
            writeOlePage()
        Else
            If pageString = "Page2" Then
                writeHansPage()
            Else
                If pageString = "Page3" Then
                    writeLottePage()
                End If
            End If
        End If
    End If
%>
</asp:Content>


....:: Default.aspx.vb ::....
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub writeOlePage()
        Response.Write("Dette er en lille tekst om Ole 1")
    End Sub

    Protected Sub writeHansPage()
        Response.Write("Dette er en lille tekst om Hans 2")
    End Sub

    Protected Sub writeLottePage()
        Response.Write("Dette er en lille tekst om Lotte 3")
    End Sub

End Class


men du prøvede, så vil du have point for din tid !? så giver jeg dem gerne til dig.
Avatar billede innercitydk Nybegynder
07. december 2006 - 15:42 #16
Vi kan da dele dem :)
Avatar billede snepnet Nybegynder
08. december 2006 - 15:32 #17
Jeg er stadig ikke med på hvad det er du gerne vil, og som du ikke kan løse med blot at lave et sæt contentpages, og så bare linke til dem.
Mvh
Avatar billede want2learn Nybegynder
10. december 2006 - 14:35 #18
ok Innercitydk og tak ;)
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



Seneste spørgsmål Seneste aktivitet
I dag 10:28 PDFEngine Af barth i Andet software
I går 22:40 Butte indhold i celler Af lurup i Excel
I går 15:24 Power Query Af djsimonsen i Excel
I går 14:43 Hvis ikke på liste, tilføj værdier til liste Af TheLibrarian i Excel
I går 11:33 Windows 11 Af ranni i Windows