webForumDet fria alternativet

Gällande serverkontroller...

16 svar · 609 visningar · startad av vift

viftMedlem sedan feb. 20056 inlägg
#1

En annan grej jag funderat på är hur man på bästa sätt, genom tex en querystring, väljer vilken serverkontroll man vill visa.
Vet inte om det är ett dumt sätt att bygga upp en sida på men jag har iaf min index.aspx som bara innehåller mina tables och som sedan fylls i med olika serverkontroller så som header.ascx, menu.ascx etc. Men hur ska jag koda för att en speciell serverkontroll ska visas i min "maintabell" i index.aspx? Antar att jag behöver göra nån sorts case-sats, men hur??

tacksam för ett bra svar!

asmodieMedlem sedan jan. 2004501 inlägg
#2

Panels är ett tips för att visa och gömma olika komponenter som man ha på sidan. Vet inte om det är det du tänkte på.

ahlenMedlem sedan juli 200498 inlägg
#3

hej Vift,

Du skulle kunna lösa det med Select Case, men i det här fallet är nog If - then - else det bästa.

Kan visa ett exempel, dock kan det bli helt misslyckat då jag är ganska trött...

Du har en mapp med alla dina Web User Controls, vi kallar den för UC för enkelhetens skull.

Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class MinCodeBehind : Inherits Page
    Protected WithEvents myPlaceHolder As Placeholder
    
    Private  Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim myControl As Control
        If Request.Querystring("page")<>"" Then
            If File.Exists("ab/" + Request.QueryString("page") + ".ascx") Then
                myControl = CType((LoadControl("ab/" + Request.QueryString("page") + ".ascx")), Control)
            Else
                myControl = CType((LoadControl("ab/felsida.ascx")), Control)
            End If
        Else
            myControl=Ctype((LoadControl("ab/start.ascx")), Control)
        End If
        myPlaceHolder.Controls.Add(myControl)
    End Sub
End Class

Sedan har du en PlaceHolder där du vill ladda in sidan.

viftMedlem sedan feb. 20056 inlägg
#4

Tack!, löste det när jag började kolla på placeholder-grejen, var den jag saknade för att få det hela att gå ihop.

echoSweMedlem sedan nov. 20041 189 inlägg
#5

Finns det något sätt att få asp:panel att inte generera tabeller till layout??

renholmMedlem sedan apr. 20012 266 inlägg
#6

Gör den?

<asp:panel id="moo" runat="server">TEST</asp:panel>

Ger:

<div id="moo">
	TEST
</div>
echoSweMedlem sedan nov. 20041 189 inlägg
#7

Ja, det gör den.

<form runat="server">
<asp:Panel ID="moo" runat="server">Moo!</asp:Panel>
</form>

Ger:

<body>
<form name="_ctl0" method="post" action="aspPanels2.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE" value="dDwxMDc1NzM1MDkzOzs+PlXmXHbGbrE3r5iyvVVOS1O1kXM=" />

<table id="moo" cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td>
	Moo!
</td></tr></table>
</form>

</body>

Använder du 2.0? Har själv ställt om till 1.1 - men jag vet inte hur man ställer tillbka..

DinoMedlem sedan sep. 20011 914 inlägg
#8

Den renderar olika till olika webbläsare. Div till uplevel (IE) och table till downlevel(resten). Har för mig att det var så.

echoSweMedlem sedan nov. 20041 189 inlägg
#9

Haha, skulle firefox vara downlevel :D
Jo, det stämmer. IE får divven :(. Dålig stil!!
Går det att komma runt? Jag vill själv välja om jag ska skicka dålig kod, eller inte!

renholmMedlem sedan apr. 20012 266 inlägg
#10

Det kan vara anledningen, jag har satt Firefox till uplevel.

echoSweMedlem sedan nov. 20041 189 inlägg
#11

Hur?

renholmMedlem sedan apr. 20012 266 inlägg
#12

Kika här: http://slingfive.com/pages/code/browserCaps

Upptäckte konstigt nog att jag faktiskt inte har satt FireFox till uplevel, utan det var på en annan site. Får dock fortfarande <div></div> som output. Använder version 1.1.4322.2032

echoSweMedlem sedan nov. 20041 189 inlägg
#13

1.1.4322.573 använder jag...
//Henke

echoSweMedlem sedan nov. 20041 189 inlägg
#14

Jag drar upp den här tråden igen, eftersom jag har fortfarande inte hittat lösningen - hur fixar man det här? Jag vill inte ha en jobbig tabell för att visa något som en div hade gjort bättre.

emissionMedlem sedan dec. 19996 721 inlägg
#15

Browsercaps borde lösa renderingsproblemet, men i princip bör man ju använda en PlaceHolder i stället för en Panel för just detta ändamål.

desdecadoMedlem sedan juli 2004206 inlägg
#16

...eller använd en literal, den tar inte så mycket resurser av servern (iofs gör inte de andra det heller mne för jämförandets skull..) =)

PaceMedlem sedan juni 20019 024 inlägg
#17

Eller lägg till <%@ Page ClientTarget="uplevel" %> på de sidor du vill tvinga att rendera till "uplevel". Kom dock ihåg att det kan få konstiga effekter eftersom mycket av formulärkoden (javascript) inte fungerar så bra i olika webbläsare. Därför är det klokt att använda downlevel på sidor där formulär används (eller utelämna parametern helt).

125 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)