webForumDet fria alternativet
Logga in / Bli medlem

codebehind, vad är det? inkludera querystring?

.NET

12 svar · 756 visningar · startad av tobie

Medlem sedan juli 200515 inlägg
Trådstart#1

hejsan!
som den stolta nybörjare jag är skäms jag inte över att totalt spamma sönder den stackars databasen med frågor som en helt vanlig svensson kanske skulle kunna, synd bara att man heter lindgren och inte svensson.

hur som helst. jag pratade med herr m_soderlund (my referer ;)) ang. hans sidsystem på dileno.com .

då fick jag följande kod / svar:

I default.aspx har jag en s.k. PlaceHolder, vi säger att den heter ph.
<asp:placeholder id="ph" runat="server" />

I en codebehindfil till default.aspx kör jag sedan denna kod:

dim x as integer = cInt(request.querystring("CatId"))
select case x
case 1
 ph.Controls.Add("usercontrol1.ascx")
case 2
 ph.Controls.Add("usercontrol2.ascx")
'etc etc.
end select

på detta har jag några följdfrågor (jag frågar här, han hänvisade hit:))

  1. vad är en såkallad "codebehind" fil? hur fungerar den? var kan jag läsa mer om den?
  2. fungerar ph.Controls.Add("usercontrol2.ascx") ungefär som PHP's include('usercontrol2.php'); ??
  3. varför har han .ascx när ASP.NET skall sparas som .aspx?

tack för er hjälp : )

Medlem sedan dec. 19991 072 inlägg
#2

Hej,

Då dina frågor bygger på några av de mest grundläggande sakerna i ASP.NET så föreslår jag att du börjar med att mala igenom alla exempel på:
http://samples.gotdotnet.com/quickstart/aspplus/

Där hittar du garanterat svaret på dina frågor! :)

Medlem sedan juli 200515 inlägg
#3

ok, tack!:)

läste igenom lite, kan inte påstå att jag förstod allt (vilket jag märkte nu när jag försökte mig på ett eget page-script.)..

får "Runtime error", kan inte förstå varför (eftersom att jag inte kan .net så bra, ÄN;)).

default.aspx:

<%@ Page Language="VB" Inherits="PageIncluder" Src="include.vb" %>
<html>
   <head>
      <title>start | tobie.se</title>
   </head>

   <body>

       <center>
	<p>
		<a href="default.aspx?pageId=1">ett</a> | <a href="default.aspx?pageId=2">två</a> 
	</p>
	<p>
		<asp:placeholder id="ph" runat="server" />
	</p>
       </center>

   </body>
</html>

include.vb:

Option Strict Off

Imports System
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Public Class PageIncluder : Inherits Page

dim x as integer = cInt(request.querystring("pageId"))
select case x
case 1
 ph.Controls.Add("test1.ascx")
case 2
 ph.Controls.Add("test2.ascx")
'etc etc.
end select

End Class

:(

Medlem sedan juli 2004206 inlägg
#4

Kör du visual studio.net ?

Medlem sedan juli 200515 inlägg
#5

eh

jag skriver allt i notepad:)

Medlem sedan juli 200515 inlägg
#6

har ändrat lite, men det strulat ändå. fast nu har jag fått med lite errors iaf..

---- ERRORS ----
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: BC30451: Name 'Request' is not declared.

Source Error:

Line 7: Protected Withevents ph as PlaceHolder
Line 8: Sub Page_Load()
Line 9: dim x as integer = cInt(Request.QueryString("pageId"))
Line 10: select case x
Line 11: case 1
---- END ERRORS ----

---- INCLUDE.VB ----
Imports System
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Public Class PageIncluder
Protected Withevents ph as PlaceHolder
Sub Page_Load()
dim x as integer = cInt(Request.QueryString("pageId"))
select case x
case 1
ph.Controls.Add("test1.ascx")
case 2
ph.Controls.Add("test2.ascx")
'etc etc.
end select
End Sub
End Class
---- END INCLUDE.VB ----

---- DEFAULT.ASPX ----
<%@ Page Language="VB" Inherits="PageIncluder" Src="include.vb" %>
<html>
<head>
<title>start | tobie.se</title>
</head>

<body>

   \<center\>
\<p\>
	\<a href="default.aspx?pageId=1"\>ett\</a\> \| \<a href="default.aspx?pageId=2"\>två\</a\> 
\</p\>
\<p\>
	\<asp:placeholder id="ph" runat="server" /\>
\</p\>
   \</center\>

</body>
</html>
---- END DEFAULT.ASPX ----

Medlem sedan juli 2004206 inlägg
#7

testa:

Line 9: dim x as integer = cInt(**page.**Request.QueryString("pageId"))

..eller..

Line 9: dim x as integer = cInt(**me.**Request.QueryString("pageId"))

btw; du ska ha en eloge att som nybörjare koda .net i notepad!

Medlem sedan apr. 200487 inlägg
#8

ändra
Public Class PageIncluder
till
Public Class PageIncluder
Inhertis System.Web.UI.Page

Medlem sedan juli 200515 inlägg
#9

:)

tack så hemskt för era svar, fast dock ploppade ett nytt felmess upp:

 Compiler Error Message: BC30456: 'Request' is not a member of 'PageIncluder'.

Source Error:

Line 9:  Protected Withevents ph as PlaceHolder
Line 10: 	Sub Page_Load()
Line 11: 		dim x as integer = cInt(me.Request.QueryString("pageId"))
Line 12: 			select case x
Line 13: 				case 1

Source File: tobie.se\public_html\include.vb    Line: 11

se: http://www.tobie.se/default2.aspx

include.vb:
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.Page
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Public Class PageIncluder
' : Inhertis System.Web.UI.Page
Protected Withevents ph as PlaceHolder
	Sub Page_Load()
		dim x as integer = cInt(me.Request.QueryString("pageId"))
			select case x
				case 1
				ph.Controls.Add("test1.ascx")
				case 2
				ph.Controls.Add("test2.ascx")
				'etc etc.
			end select
	End Sub
End Class
Medlem sedan juli 2004206 inlägg
#10

Du ska inte skriva "me" när du har import på system.web.ui.page (för "request" ligger under "page")

Medlem sedan juli 200515 inlägg
#11

ok!
du är schysst, snällt att du hjälper!:)

men.:(
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: BC30469: Reference to a non-shared member requires an object reference.

Source Error:

Line 10: Protected Withevents ph as PlaceHolder
Line 11: Sub Page_Load()
Line 12: dim x as integer = cInt(Request.QueryString("pageId"))
Line 13: select case x
Line 14: case 1

Source File: tobie.se\public_html\include.vb Line: 12

Medlem sedan juli 200515 inlägg
#12

är det ingen annan som har ett liknande script då?
som jag kan "få"? :/

Medlem sedan juli 200515 inlägg
#13

sååå!
äntligen har det löst sig
fick hjälp utan sälen (på http://sealstudio.net) via msn och nu löste det sig toppen

  1. spara include.vb som include.aspx.vb
  2. ändra koden till:
    Imports System
    Imports System.Web
    Imports System.Web.UI
    Imports System.Web.UI.Page
    Imports System.Web.UI.WebControls
    Imports System.Web.UI.HtmlControls

Public Class PageIncluder : Inherits Page
' : Inhertis System.Web.UI.Page
Protected Withevents ph as PlaceHolder
Sub Page_Load()
dim ctrControl as Control
dim x as integer = cInt(Request.QueryString("pageId"))
select case x
case 1
ctrControl = CType(LoadControl("test1.ascx"), Control)
case 2
ctrControl = CType(LoadControl("test2.ascx"), Control)
case else
ctrControl = CType(LoadControl("test1.ascx"), Control)
'etc etc.
end select
ph.Controls.Add(ctrControl)
End Sub
End Class

  1. ändra default.aspx placeholder namnet till ph, inte page:)

allt klart!

287 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
156 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)