Håller på och försöker göra så att rubriken på sidan ska skrivas in i codebehind. <title=min titel> Felmeddelande: nu ser koden ut så här: Du måste sen även tilldela den något värde, ex: hmm, men eftersom den där texten ska ändras på varje sida, hur gör man då? Mm, nu kommer den texten fram. Men hur ska jag göra för att det blir olika text där beroende på vilken avdelning man är inne i? Magnus, Jag har en .aspx-fil som heter default.aspx. Sedan har jag en mapp som heter uc där jag förvarar tre stycken .ascx-filer write, read och admin.ascx. I default.aspx includerar jag ascx-filerna med hjälp av den här snutten <asp:placeholder id="myPlaceHolder" runat="server" />. Jo, men det säger ingenting om hur du väljer vilken sida som visas. Det är där du väljer sida som du också får välja vilken text som visas. Precis.. på samma ställe som du avgör vilken ascx du skall ladda in blir juh automatiskt det mäst lämpliga stället att samtidigt uppdatera rubriken på. Så här ser codebehind ut: Magnus, det funkar halvt nu, pagetitle.Text = "Skriv i gästboken" skrivs inte ut. Men de andra skriva ut korrekt? Skumt i så fall.. prova läggaRubrik på sidan
här är min kod
<code>
sub sidnamn()
dim sidnamn As Label
if request.querystring("avdelning") = "write" then
sidnamn.Text = "Skriv i gästboken"
elseif request.querystring("avdelning") = "read" then
sidnamn.Text = "Läs i gästboken"
elseif request.querystring("avdelning") = "admin" then
sidnamn.Text = "Admin"
end if
End sub
</code>
Jag vet inte riktigt hur man ska göra detta, hur ska man utveckla den där koden så att den fungerar? Sv: Rubrik på sidan
Ändra den till
<html>
<head>
<title id=pagetitle runat=server>
</head>
<body> .....
Sen deklarerar du den i codebehind
Protected PageTitle As System.Web.UI.HtmlControls.HtmlGenericControl
Därefter i din form_load skriver du:
PageTitle.InnerText = "min titel på sidan"
Hoppas det hjälper.Sv: Rubrik på sidan
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: BC30001: Statement is not valid in a namespace.
Source Error:
Line 2: Imports System.Web.UI
Line 3: Imports System.Web.UI.WebControls
Line 4: Protected PageTitle As System.Web.UI.HtmlControls.HtmlGenericControl
Line 5:
Line 6:
Hmm, fattar inte riktigt hur jag ska sätta ut det där på sidan. Kan du ändra så det blir rätt utsatt osv?
Min sidkod:
<code>
<BODY>
<CENTER>
<DIV ID="top" ALIGN="right"><title id=pagetitle runat=server></DIV>
<DIV ID="meny" ALIGN="left">Skriv / LäsDIV>
<DIV ID="maincontainer" ALIGN="left"><asp:placeholder id="myPlaceHolder" runat="server" /></DIV>
<DIV ID="bottom">Copyright © 2004</DIV>
</CENTER>
</BODY>
</code>Sv: Rubrik på sidan
<code>
<BODY style="background-image: url('grafik/bg.jpg')">
<CENTER>
<DIV ID="top" ALIGN="right"><asp:label id="pagetitle" runat="server"></asp:label></DIV>
<DIV ID="meny" ALIGN="left">Skriv / Läs
/ Admin</DIV>
<DIV ID="maincontainer" ALIGN="left"><asp:placeholder id="myPlaceHolder" runat="server" /></DIV>
<DIV ID="bottom">Copyright © 2004 Magnus Jonsson</DIV>
</CENTER>
</BODY>
</code>
Så här ser det ut i codebehind:
<code>
Protected WithEvents pagetitle As System.Web.UI.WebControls.Label
</code>
Behöver man inte skriva ut hur rubriken ska se ut, eller blir det querystringen när man har sådär?Sv: Rubrik på sidan
pagetitle.Text = "Här kommer texten"Sv: Rubrik på sidan
vart ska man lägga in den där texten, är det under den kod man la in i codebehind?Sv: Rubrik på sidan
Sv: Rubrik på sidan
Det beror juh på hur du kodar din sida? Använder du en och samma aspx för alla sidor? Dvs du dynamiskt laddar in sid innehållet? Annars har du juh flera olika aspx filer, och så hårdkodar du in namnet på varje sida. Det sista alternativet är att skapa en WebControl som kapslar in rubrik logiken och sen sätter du sen på sidan.
I din kontroll har du då t.ex ett property som du förslagsvis kallar Text.. på varje sida lägger du din WebControl och sen i Page_Load kan du göra
myWebControl.Text = "Sida A";
etc.. du får gärna beskriva mer hur du gybber upp de olika sidorna så kanske vi kan hitta på en ännu bättre lösning.
//Andreas
Sv: Rubrik på sidan
Så det enda som ändras på sidan när man går in på en ny avdelning är <DIV>:en som includerar ascx-filerna.
Sidans språk är vb.
Hoppas att ni fick en bättre bild hur den är uppbyggd nu! :) Sv: Rubrik på sidan
Sv: Rubrik på sidan
//AndreasSv: Rubrik på sidan
<code>
Imports System.IO
Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class CodeBehind
Inherits Page
Protected WithEvents pagetitle As System.Web.UI.WebControls.Label
Protected WithEvents myPlaceHolder As System.Web.UI.WebControls.PlaceHolder
private myControl As Control
private sub Page_Load(sender as object, e as System.EventArgs)
if File.Exists(Page.MapPath("uc/" & System.Web.HttpContext.Current.Request.QueryString("avdelning") & ".ascx")) Then
myControl = LoadControl("uc/" & System.Web.HttpContext.Current.Request.QueryString("avdelning") & ".ascx")
myPlaceHolder.Controls.Add(myControl)
else
myControl = LoadControl("uc/write.ascx")
myPlaceHolder.Controls.Add(myControl)
End If
pagetitle.Text = "Gästbok v1.0"
End Sub
End class
</code>
Där ser ni hur jag laddar in sidan.Sv: Rubrik på sidan
Det enklaste är om du kombinerar ditt första och ditt sista inlägg i denna tråden. Jag säger inte att det är den bästa lösningen men baserat på hur du har byggt din sida och vilken information du skickar in så kan du använda dig av
<code>
Imports System.IO
Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class CodeBehind
Inherits Page
Protected WithEvents pagetitle As System.Web.UI.WebControls.Label
Protected WithEvents myPlaceHolder As System.Web.UI.WebControls.PlaceHolder
private myControl As Control
private sub Page_Load(sender as object, e as System.EventArgs)
if File.Exists(Page.MapPath("uc/" & System.Web.HttpContext.Current.Request.QueryString("avdelning") & ".ascx")) Then
myControl = LoadControl("uc/" & System.Web.HttpContext.Current.Request.QueryString("avdelning") & ".ascx")
myPlaceHolder.Controls.Add(myControl)
if request.querystring("avdelning") = "read" then
pagetitle.Text = "Läs i gästboken"
elseif request.querystring("avdelning") = "admin" then
pagetitle.Text = "Admin"
end if
else
myControl = LoadControl("uc/write.ascx")
myPlaceHolder.Controls.Add(myControl)
pagetitle.Text = "Skriv i gästboken"
End If
End Sub
End class
</code>
Det är för mig lite "oroväckande" att du löst att dynamiskt ladda in ascx filer men du vet inte var i din enkla programlogik (en if-else sats) du ska placera så en rubik blir rätt ? =) Du försöker väl inte bo o huset innan du har byggt det (skriva "svåra" saker innan du läst på grunderna)?
Hoppas detta fixar det!
//AndreasSv: Rubrik på sidan
I väntan på att en bok som jag har beställt ska dumpa ner i brevlådan testade jag en artikeln som visade om hur man laddar in ascx-filer dynamiskt. Sv: Rubrik på sidan
pagetitle.Text = "Skriv i gästboken"
överts i din else-sats
//Andreas