Toon posts:

ASP.NET / VB.NET Object reference not set to an instance of

Pagina: 1
Acties:
  • 47 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben bezig met een erg simpel formuliertje. De Button werkt verder.
In het form worden checkboxes gebruikt. Deze heten ook Chk1 en Chk2.

Nu heb ik een script geschreven dat moet kijken welk vakje is afgevinkt en daarop dan een bepaalde mail verzenden.

Ik krijg echter een foutmelding die luidt:
System.NullReferenceException: Object reference not set to an instance of an object.

Mijn script ziet er als volgt uit:

Sub Button_Click ( sender As Object, e As EventArgs)
Dim Chk1 As CheckBox
Dim Chk2 As CheckBox

If Chk1.checked Then //DIT MARKEERT HIJ ALS FOUT
Dim SendMail As MailMessage
SendMail = New MailMessage

With SendMail
.From = email.Text
.To = "xaio@wanadoo.nl"
.Subject = "Aanmelden voor nieuwsbrief spectaculaire aanbiedingen via mailing"
.Body ="De heer heeft zichzelf aangemeld om op de hoogte te worden gehouden over andere spectaculaire aanbiedingen van Quipment."
End With

SmtpMail.Send(SendMail)
ElseIf Chk2.checked Then
Dim SendMail As MailMessage
SendMail = New MailMessage

With SendMail
.From = email.Text
.To = "xaio@wanadoo.nl"
.Subject = "Aanmelden voor nieuwsbrief spectaculaire aanbiedingen via mailing"
.Body ="De heer heeft zichzelf aangemeld voor de Quipment nieuwsbrief."
End With

SmtpMail.Send(SendMail)
End If

End Sub

Weet iemand hoe dit op te lossen is?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Debug je code eens , en kijk eens op welke regel je die exceptie krijgt.
Kijk dan ook eens wat er NULL is.

https://fgheysels.github.io/


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Code tags toevoegen. Op welke line krijg je de exception?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:13

mulder

ik spuug op het trottoir

Je moet die Chk1 nog instantieeren

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
ik krijg de exception op line 14. Dit is de volgende regel


Line 12: Dim Chk2 As CheckBox
Line 13:
Line 14: If Chk1.checked Then
Line 15: Dim SendMail As MailMessage
Line 16: SendMail = New MailMessage

Dit is mijn Stack:


Stack Trace:


[NullReferenceException: Object reference not set to an instance of an object.]
ASP.aanmelden_aspx.Button_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\aanmelden.aspx:14
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Don Facundo schreef op 23 juni 2004 @ 15:56:
Je moet die Chk1 nog instantieeren
Dat zijn checkboxen die hij ws op z'n webform gedropped heeft; die worden automatisch geinstantieerd normaal.

Hmm, toch niet. Die staan gedefinieerd in z'n Button_Click event handler.
Wat doen die definities daar? Die heb je daar helemaal niet nodig.
Als die checkboxen op je webform staan, snap ik niet waarom ze daar gedeclareerd zijn.

PS: zet je code ook eens tussen [code] [/code] tags.

[ Voor 42% gewijzigd door whoami op 23-06-2004 15:59 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
hoe zou ik dat anders moeten doen dan? dat instantieren.
Ik weet dat het een beetje 'n00b' klinkt, maar ben deze week met ASP.NET begonnen, vandaar dat ik er nog niet veel van snap.
Kan dat iemand uitleggen hoe ik ze distantieer?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:13

mulder

ik spuug op het trottoir

Heb je die checkboxen gedropt op je pagina? Dan zou er automagisch een referentie moeten worden gemaakt met deze checkboxen en geld het verhaal van whoami van hierboven; de twee Dim statements zijn dan overbodig.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
whoami schreef op 23 juni 2004 @ 15:57:
[...]


Dat zijn checkboxen die hij ws op z'n webform gedropped heeft; die worden automatisch geinstantieerd normaal.

Hmm, toch niet. Die staan gedefinieerd in z'n Button_Click event handler.
Wat doen die definities daar? Die heb je daar helemaal niet nodig.
Als die checkboxen op je webform staan, snap ik niet waarom ze daar gedeclareerd zijn.

PS: zet je code ook eens tussen [code] [/code] tags.
ik heb ze niet op mijn veld gedropt, maar gewoon in code geschreven. Nadat ik die dims weggehaald had / er nog niet had staan kreeg ik de volgende error:

BC30451: Name 'Chk1' is not declared.

[ Voor 14% gewijzigd door Verwijderd op 23-06-2004 16:04 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Die checkboxen staan toch op je webpagina ? Die zal je er ws op gedragged hebben vanaf je toolbox?
Als je de code bekijkt, zal je zien dat die checkboxen ook members zullen zijn van je pagina.

Je pagina zal er maw zo (ongeveer) uitzien (uit de losse hand, en in C#):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyWebPage : Page
{
    protected CheckBox chk1;
    protected CheckBox chk2;

    public void Page_Load(object sender, EventArgs e)
    {
    }

    public void Button1_Click(object sender, EventArgs e) 
    {
    }
}

Aangezien die checkboxen dus 'form' variablen zijn, kan je aan die controls/variablen vanaf iedere member-functie binnen je webpagina.

Je Button1_Click moet er dus zo uitzien:
code:
1
2
3
4
5
6
7
void Button1_Click ( ... )
{
   if( chk1.Checked )
   {
      ...
   }
}


Maw, je hoeft die checkboxen in je button_click handler niet meer te declareren.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Verwijderd schreef op 23 juni 2004 @ 16:03:
[...]


ik heb ze niet op mijn veld gedropt, maar gewoon in code geschreven. Nadat ik die dims weggehaald had / er nog niet had staan kreeg ik de volgende error:

BC30451: Name 'Chk1' is not declared.
Heten die checkboxen dan wel chk1 en chk2 ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 23 juni 2004 @ 16:04:
Die checkboxen staan toch op je webpagina ? Die zal je er ws op gedragged hebben vanaf je toolbox?
Als je de code bekijkt, zal je zien dat die checkboxen ook members zullen zijn van je pagina.

Je pagina zal er maw zo (ongeveer) uitzien (uit de losse hand, en in C#):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyWebPage : Page
{
    protected CheckBox chk1;
    protected CheckBox chk2;

    public void Page_Load(object sender, EventArgs e)
    {
    }

    public void Button1_Click(object sender, EventArgs e) 
    {
    }
}

Aangezien die checkboxen dus 'form' variablen zijn, kan je aan die controls/variablen vanaf iedere member-functie binnen je webpagina.

Je Button1_Click moet er dus zo uitzien:
code:
1
2
3
4
5
6
7
void Button1_Click ( ... )
{
   if( chk1.Checked )
   {
      ...
   }
}


Maw, je hoeft die checkboxen in je button_click handler niet meer te declareren.
Ik heb ze niet gedragged vanuit mijn toolbox, gewoon als code geschreven. Die pagina met die private_voids zie ik ook nergens.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Verwijderd schreef op 23 juni 2004 @ 16:05:
[...]


Ik heb ze niet gedragged vanuit mijn toolbox, gewoon als code geschreven. Die pagina met die private_voids zie ik ook nergens.
Drag en drop ze dus maar op je webform; indien je ze zelf schrijft, dan zal je ze ook aan je control collectie moeten toevoegen, ze instantieren, ervoor zorgen dat ze er opnieuw zijn na een postback , etc...

Ivm die private void stuff: jij gebruikt VB.NET, dus dat zal daar wel iets met procedure stuff enzo zijn.

https://fgheysels.github.io/


Verwijderd

Topicstarter
wel ik heb ze erop gedropped. Heb ook voids nu, maar krijg nog steeds de error:
BC30451: Name 'Chk1' is not declared.

terwijl ik dat wel heb volgensmij, want heb per slot van rekening ze erin gesleept.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
'void's? Wat moet jij met 'void's ?

Heten je checkbox dan ook Chk1?

https://fgheysels.github.io/


Verwijderd

dubbelklik eens op die foutmelding. Je VS zal dan naar de goede regel springen. zie iig soms chk1 en in je foutmelding staat Chk1. Typefoutje!?

edit:
Post anders eens je volledige code (tussen [ code ] tags)

[ Voor 20% gewijzigd door Verwijderd op 23-06-2004 16:48 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:58

gorgi_19

Kruimeltjes zijn weer op :9

Dit topic gaat nergens meer over, omdat de basis een beetje gemist wordt. :) De foutmelding wordt veroorzaakt door het volgende probleem:

1. Definieer chk1 als een checkbox.
2. Als chk1 aangevinkt is, voer dan een actie uit.

Vervolgens krijg je een runtime error: "Wat is chk1?" en wordt eenexceptie gegooid.
Oftewel: maak een verwijzing van chk1 naar de juiste checkbox.

Met de standaard methodiek van ASP.Net icm VS.Net wordt, als je een checkbox via de designer toevoegd, automatisch een protected var aangemaakt, waarbij de naam van de var overeenkomt met het id van het bijbehorende control. (en wordt de verwijzing dus automatisch gemaakt).

Voor zover de achtergrond informatie. Aan je verdere replies te zien gaat dit topic redelijk richting de basis en het leren programmeren. Hier is Programming & Webscripting niet voor bedoeld. Immers, daar zijn tutorials (www.asp.net , dan de quickstarts) en genoeg boeken (iets als ASP.Net / VB.Net in 24 uur) voor geschreven, die dit veel duidelijker en beter kunnen uitleggen. whoami legt het bijvoorbeeld netjes en duidelijk uit in C#; de topicstarter kan alleen de vertaling niet maken naar VB.Net, waardoor het verwarrend voor hem werkt. :)

Verder zie ik de opmerking dat chk1 niet gelijk is aan Chk1. Voor VB.Net wel; althans, als Option Strict uit staat. Dit is standaard het geval; dit zal geen compiler / runtime error normaliter opleveren.

In ieder geval; dit topic gaat dicht.

[ Voor 7% gewijzigd door gorgi_19 op 23-06-2004 18:26 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.