[ASP.NET] Code Behind

Pagina: 1
Acties:

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Ik zit met een probleem dat volgens mij erg simpel op te lossen is, maar ik kom er niet uit :(

Ik heb de volgende aspx pagina:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebForm1"%>
<script runat="server">
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        Dim Comp As New HelloWorld.HelloObj()
        Dim sTemp As String = Comp.SayHello() + "<p>"

        sTemp &= "Microsoft .NET Framework"
        sTemp &= Comp.SayHello() + "<p>"

        Comp.FirstName = "ASP.NET"
        sTemp &= Comp.SayHello() + "<p>"

        Comp.FirstName = "World!!!"
        sTemp &= Comp.SayHello()
        Message.innerHTML = sTemp
    End Sub
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta name="vs_defaultClientScript" content="JavaScript">
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
        <div id="Message" runat="server"/>
        </form>
    </body>
</HTML>


Dit werkt zonder problemen.
Nu wil ik die Page_Load Sub in een codebehind file zetten. Ik heb het volgende geprobeerd:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Class WebForm1
    Inherits System.Web.UI.Page

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        Dim Comp As New HelloWorld.HelloObj()
        Dim sTemp As String = Comp.SayHello() + "<p>"

        sTemp &= "Microsoft .NET Framework"
        sTemp &= Comp.SayHello() + "<p>"

        Comp.FirstName = "ASP.NET"
        sTemp &= Comp.SayHello() + "<p>"

        Comp.FirstName = "World!!!"
        sTemp &= Comp.SayHello()
        Message.innerHTML = sTemp
    End Sub
End Class


Maar dan zegt ie opeens:
'Name "message" is undefined.'
Hoe kan ik nou in die codebehind aangeven dat ik met message de serverside div uit het aspx bestand bedoel?

[ Voor 15% gewijzigd door UniCache2 op 21-01-2003 21:55 . Reden: Sorry voor layout ]


Verwijderd

Dan moet je waarschijnlijk effe met de hand een variabele voor dit object toevoegen aan je codebehind pagina (voor div volgens mij HtmlGenericControl) met dezelfde naam als in de HTML pagina.

  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Ok, ik heb nu de volgende regel toegevoegd, in de codebehind file, na de 2 Dim regels:
Dim Message As HtmlGenericControl

Nu geeft ie de foutmelding:
System.NullReferenceException: Object reference not set to an instance of an object.
Line 32: Message.innerHTML = sTemp

Het lijkt er dus op dat de codebehind niet goed doorheeft dat er in de aspx pagina een control bestaat met de naam "Message"...

Als ik dit doe:
Dim Message As New HtmlGenericControl (dus met "New" er bij)
Dan krijg ik ook geen foutmeldig, maar is de pagina helemaal leeg. De Div wordt dus weer niet gevuld :'(

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:24

gorgi_19

Kruimeltjes zijn weer op :9

Dit maakt VS er van...

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>WebForm1</title>
        <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
        <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </head>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <div id="Message" runat="server" />
        </form>
    </body>
</html>


ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Public Class WebForm1
    Inherits System.Web.UI.Page
    Protected WithEvents Message As System.Web.UI.HtmlControls.HtmlGenericControl

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        Dim Comp As New HelloWorld.HelloObj()
        Dim sTemp As String = Comp.SayHello() + "<p>"

        sTemp &= "Microsoft .NET Framework"
        sTemp &= Comp.SayHello() + "<p>"

        Comp.FirstName = "ASP.NET"
        sTemp &= Comp.SayHello() + "<p>"

        Comp.FirstName = "World!!!"
        sTemp &= Comp.SayHello()
        Message.InnerHtml = sTemp

    End Sub

End Class


En die plusjes kan je imho beter vervangen door &; je wilt immers niets optellen.. :)

[ Voor 59% gewijzigd door gorgi_19 op 22-01-2003 00:50 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:42
Heb je die code-behind file wel gekoppeld aan uw webform?

(Zie de eerste regel in gorgi_19's code van z'n webform)

https://fgheysels.github.io/


  • UniCache2
  • Registratie: Januari 2001
  • Laatst online: 02-03 09:30
Thanx! Deze regel moest er inderdaad bij:

Protected WithEvents Message As System.Web.UI.HtmlControls.HtmlGenericControl

En ja Whoami, hij was wel al gekopeld, zie eerste bericht.
Pagina: 1