Toon posts:

[asp.net] Event probleem, label verandert niet.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een asp.net site die deze dll gebruikt om via het MSN netwerk berichten zou moeten verzenden/ontvangen. Hier kan je er documentatie over vinden.

Dit is een voorbeeld app in c# icm met winforms. Met het omzetten van dit voorbeeld in asp.net (zowel met c# als met vb.net) heb ik problemen. Onderstaande code werkt tot op een zekere hoogte, het doet wat er van verwacht wordt: Je kan er via twee textboxjes en een button inloggen op het msn netwerk en als iemand dan een gesprek begint met degene die ingelogd is (het conversation object wordt gemaakt) krijgt zij/hij de gepaste melding: (" Hello " + e.Contact.Name + " of " + e.Contact.Mail)

Visual Basic .NET:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Private WithEvents thisMessenger As New DotMSN.Messenger
Private WithEvents thisConversation As Conversation

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As 
                              System.EventArgs) Handles MyBase.Load
       If not page.ispostback
              StartMSN()
       end if

End Sub

Public Sub StartMSN()

        'verbinden
        thisMessenger.Connect(TextBoxEmail.Text, TextBoxPaswoord.Text)
        LabelLog.Text += "Connected!<br>"
        'we must set an initial status otherwise 
        thisMessenger.SetStatus(MSNStatus.Online)
        LabelLog.Text += "Status set to online!<br>"

End Sub

' we want to do something when we have a conversation

Private Sub ConversationCreated(ByVal sender As Messenger, ByVal e As 
                      ConversationEventArgs) Handles thisMessenger.ConversationCreated

        LabelLog.Text += "Conversation object created"
        thisConversation = e.Conversation

End Sub

    'they will join _after_ this event. We create another callback to handle this.
    'When user(s) have joined we can start sending messages.

Private Sub ContactJoined(ByVal sender As Conversation, ByVal e As 
                       ContactEventArgs) Handles thisConversation.ContactJoin

        ' someone joined our conversation! remember that
       ' this also occurs when you are
        'only talking to 1 other person. Log this event.
        LabelLog.Text += e.Contact.Name + " joined the conversation."
      
        'now say something back. You can send messages using
        'the Conversation object.
        sender.SendMessage(" Hello " + e.Contact.Name + " of " + e.Contact.Mail)
        LabelLog.Text += e.Contact.Name + " wil iets zeggen :d <br>"

End Sub

    'we can do somthing when someone goes online

Private Sub ContactOnline(ByVal sender As Messenger, ByVal e As 
                                 ContactEventArgs) Handles thisMessenger.ContactOnline
        LabelLog.Text += e.Contact.Name + " is online!<br>"

End Sub

    'we can do somthing when someone goes offline

Private Sub ContactOffline(ByVal sender As Messenger, ByVal e As 
                                   ContactEventArgs) Handles thisMessenger.ContactOffline
        LabelLog.Text += e.Contact.Name + " is offline! <br>"

End Sub


Regel 45 wordt dus uitgevoerd maar regel 46 niet meer! De waarde van label 'labellog' kan ik niet aanpassen. Ik kan niet meer aan de controls op mijn pagina zo lijkt het. In winforms is dit geen probleem en wordt de waarde in de label wel aangepast.

In de methode ContactJoined kan ik dus onmogelijk communiceren met de asp.net pagina. Ook response.redirect(...) of response.write(..) werken niet als ik deze in die methode zet.

Tijdens een zoektocht op internet vond weinig, ik weet niet welke zoekwoorden ik moet kiezen. Dit was verhelderend maar helpt mij nog niet verder.

Nu is mijn vraag: Hoe kan ik aan de controls van mijn pagina? Hoe vraag ik een postback aan?

[ Voor 5% gewijzigd door Verwijderd op 26-11-2003 00:33 . Reden: if not page.ispostback toegevoegd ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:08

gorgi_19

Kruimeltjes zijn weer op :9

Regel 4 loopt te etteren?

If Page. IsPostBack

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Mja ik zie je punt maar in de echte code is dat het probleem niet. Dit is blijkbaar tijdens het copy pasten - eenvoudiger en layout vriendelijker maken verkeerd gelopen. Ik idd die startmsn verkeerd gezet. In mijn code wordt die uitgevoerd door een button.

[ Voor 4% gewijzigd door Verwijderd op 26-11-2003 07:38 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:03
Tja, zolang je geen postback veroorzaakt, kan het label idd niet aangepast worden, wat eigenlijk best logisch, aangezien de pagina die je voor je hebt, reeds 'gedestroyed' is op de server.

Eigenlijk is ASP.NET imo geen geschikt platform om dergelijke applicatie in te schrijven.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Het is idd logish. Maar is er geen enkele manier om dit te omzeilen? Door bvb je lifecyle van je pagina op een of andere manier te verlengen?

ASP.NET is idd niet het ideale platform voor deze applicatie, in winforms is het namelijk geen probleem. Dat is nu net de uitdaging. :)

Ik heb nog wat gegoogeld en kwam oa dit tegen:
To get around
the problem, I would subscribe all the event handlers at
construction time and have a check placed in the event
handler for Button2 that ensures that Button1 was clicked.

You need to remember that not everything is serialized and
stored; put simply it would kill performance and cause real
problems for web-farming.
Wat wordt hier juist mee bedoeld?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:03
Verwijderd schreef op 26 november 2003 @ 15:14:
Het is idd logish. Maar is er geen enkele manier om dit te omzeilen? Door bvb je lifecyle van je pagina op een of andere manier te verlengen?
Dat kan je niet.
Als je pagina getoond wordt in je browser, is hij al dood.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:08

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 26 november 2003 @ 15:14:
Het is idd logish. Maar is er geen enkele manier om dit te omzeilen? Door bvb je lifecyle van je pagina op een of andere manier te verlengen?
Da's net zoiets als je pamfletten hebt gedrukt, uitgedeeld, en er later achter komt dat er nog wat bijgeschreven moet worden.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

je zou data in een session kunnen dumpen.. en dan je page om de zoveel tijd laten refreshen en dan de data uit je session halen....
Pagina: 1