Toon posts:

[ASP/C#] Ajax / Atlas*

Pagina: 1
Acties:
  • 167 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Gegroet!

Ik had het een en ander gelezen over de AJAX methode en was uitgekomen op een soortgelijke manier voor ASP .NET 2.0. Je kunt namelijk met de callback functie die in ASP 2.0 zit gebruiken om stuff door heen en weer te sturen van de client naar de server zonder de page te refreshen.

Nu is deze functie die in ASP zit, maar voor 1 callback mogelijk en als je bijvoorbeeld 2 buttons hebt, weet je niet welke button het is etc.. of welke andere control dan ook het stuurde.. Dus kwam ik uit bij een tutorial. Deze was alleen voor de BETA versie geschreven van .net 2.0, waarbij de types van de functies anders waren. Ik heb dit een beetje herschreven, maar het wil niet echt werken...

Ik weet niet of mensen hier sowieso bekent mee zijn.

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
public delegate string delScriptCallBack(string eventArgument);
    
    public class EventControl : Control, ICallbackEventHandler
    {
        public event delScriptCallBack ScriptCallback;
        private string _callbackArg;

        void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
        {
            _callbackArg = eventArgument;
        }

        string ICallbackEventHandler.GetCallbackResult()
        {
            return RaiseCallbackEvent(_callbackArg);
            
        }

        protected virtual string RaiseCallbackEvent(string eventArgument)
        {

            if (this.ScriptCallback != null)
                return this.ScriptCallback(eventArgument);

            return "Not Implemented";
        }
    }


Dit is de class voor elke control op je html page (button, textfield.. wat dan ook) waarbij je constant een nieuwe aanmaakt. Hier bind je dan een functie aan die de callback uitvoert bij Scriptcallback op deze manier:

code:
1
2
3
4
5
6
7
8
9
10
11
public EventControl Button1Event = new EventControl();
this.Button1Event.ScriptCallback += new delScriptCallBack(CustomerEventControl_ScriptCallback);
this.AddParsedSubObject(this.Button1Event);
string ScriptRef = this.ClientScript.GetCallbackEventReference(
                    this.Button1Event,
                    "document.getElementById('Button1').value",
                    "TestCallback",
                    "'TestJavaScriptfunctie'",
                    "TestCallback",
                    true);
this.Button1.Attributes.Add("onclick", ScriptRef);


Hierin wordt de callback dus geinitialiseerd en de onclick functie op het object Button1 geset, zodat deze naar de server wordt gestuurd. Als het goed is zou dit dan moeten worden gereturned naar de client.

code:
1
2
3
4
string Button1_ScriptCallback(string eventArgument)
    {
        return "TestTestButton1";
    }


De functie TestJavaScript functie parst TestTestButton1 dan in een <div> waardoor je op je browser iets nieuws ziet, zonder te refreshen van de pagina.

Maar helaas, ik krijg deze error(s):

Error 1 '_Default' does not implement interface member 'System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(string)' c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\website2\45bbc2d9\1f87478a\App_Web_qx0ubqhg.0.cs 14

Error 2 '_Default' does not implement interface member 'System.Web.UI.ICallbackEventHandler.GetCallbackResult()' c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\website2\45bbc2d9\1f87478a\App_Web_qx0ubqhg.0.cs 14

Eerlijk gezegd snap ik niks van deze error :+ En als ik er op google kom ik op de pagina's uit die ik als hulpmiddel heb gebruikt ;) Bij comments van mense die er ook nie uitkomen...

Dusss.. khoop niet dat dit veronderstelt wordt als debuggen, want ik heb er eerst zelf goed naar gekeken en gegoogeled ;(

Khoop dat iemand me kan helpen :) _/-\o_

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:16

TeeDee

CQB 241

Ben je nu niet het wiel opnieuw aan het uit vinden? Er is een AJAX.net wrapper aanwezig, en zoals ik het nu 1 2 3 ff bekijk, ben je dit zelf aan het implementen.

Verder heb ik zelf "ooit" (c.q. vroegah) wel eens problemen gehad met default, _default e.d.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
TeeDee schreef op vrijdag 20 januari 2006 @ 19:10:
Ben je nu niet het wiel opnieuw aan het uit vinden? Er is een AJAX.net wrapper aanwezig, en zoals ik het nu 1 2 3 ff bekijk, ben je dit zelf aan het implementen.

Verder heb ik zelf "ooit" (c.q. vroegah) wel eens problemen gehad met default, _default e.d.
Hoe bedoel je een AJAX.net wrapper aanwezig?? In ASP .NET of een library op het internet ?

Ik had zo'n library geprobeerd.. maar die kreeg ik echt niet aan de praat.. maar als je zegt dat dat echt makkelijker is dan zal ik hem nog eens proberen te gebruiken... |:(

EDIT: Deze http://ajax.schwarz-interactive.de/csharpsample/default.aspx

[ Voor 8% gewijzigd door Verwijderd op 20-01-2006 19:18 ]


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 21:42
In ASP.NET 2.0 heet het niet ajax, maar Atlas. Ik weet alleen dat het zo heet, ik heb er nog niet mee gewerkt.

Verwijderd

Topicstarter
Sybr_E-N schreef op vrijdag 20 januari 2006 @ 19:19:
In ASP.NET 2.0 heet het niet ajax, maar Atlas. Ik weet alleen dat het zo heet, ik heb er nog niet mee gewerkt.
Ja klopt.. maar dat mag je niet gebruiken op een "echte" website:
1. INSTALLATION AND USE RIGHTS.
• You may install and use any number of copies of the software on your premises to design, develop and test your programs for use with the software running on the Microsoft .NET Framework 2.0 component of the applicable Microsoft Windows operating system.
• You may not test or otherwise use the software in a live operating environment unless Microsoft permits you to do so under another agreement. You also may not use the software to deploy or publish web applications for any use by third parties.
Maarja.. is dat alleen als je er geld aan gaat verdienen? Kbedoel.. hoe kunnen ze dat controleren.. ?

ah wacht:

You may not • use the software for commercial software hosting services.. maar dat doe ik niet.. ff atlas checken dan :)

Het is trouwens nog steeds niet gelukt om het probleem met die _default op te lossen :'(

EDIT:

Okay.. Atlas werkt inderdaad gewoon goed :) Was inderdaad het wiel opnieuw uitvinden.. sorry :+

[ Voor 28% gewijzigd door Verwijderd op 20-01-2006 20:05 ]


Verwijderd

Aan de foutmelding te zien laat je je pagina over erven van de ICallBackHandler.

De definitie van de methodes tussen .net2.0 RC1 en .net2.0 final is gewijzigd. Waarschijnlijk werkt daarom je tutorial niet.

Als je de ICallBackHandler wil gebruiken moet je de volgende methodes implementeren, voor extra info kijk op msdn:

RaiseCallbackEvent(string);
GetCallbackResult();

Return types weet ik niet uit me hoofd, dus die moet je zelf even opzoeken.

Succes

p.s, google eens op AJAX.NET, dat is een toolkit voor .net om ajax te gebruiken. Een stuk handiger dan de manier die je nu doet. Je kan bijvoorbeeld meerdere parameters meegeven ;)

  • beany
  • Registratie: Juni 2001
  • Laatst online: 23:31

beany

Meeheheheheh

AJAX.NET is prima te gebruiken. In het begin kan het een beetje verwarrend zijn, maar ik vind Atlas in zijn huidige staat nog verwarrender eigenlijk.

Het is alleen jammer dat het een beetje rammelt bij AJAX.NET. Eerst zou het open source worden, en nu is de schrijver ervan opnieuw begonnen(waarbij ook de structuur/aanroepen/namen van classes etc veranderd zijn) omdat het bedrijf waar hij werkt besloten heeft om hun AJAX.NET versie in een commercieel traject te plaatsen.

Ik heb dus nog niet echt veel vertrouwen in AJAX.NET(de nieuwe gratis versie). Ik blijf het volgen, maar ik hoop ook stiekum dat er een andere echte open source library zal komen die wat stabieler is qua organisatie/mensen erachter.

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Verwijderd

Topicstarter
Ik heb nu inderdaad Atlas geinstalleerd, vind ik (imo) minder verwarrend als AJAX.net, het is inderdaad verwarrend wat AJAX.net nu precies is.. maar Atlas werkt nu prima dus ga ik daar eventjes mee aan de slag :)

Verwijderd

Heb je die ICallBackHandler interface nog geprobeerd?

Verwijderd

Topicstarter
Verwijderd schreef op zaterdag 21 januari 2006 @ 18:42:
Heb je die ICallBackHandler interface nog geprobeerd?
Nope.. niet meer geprobeerd,, Atlas werkt prima, ik kan nu:

- Verschillende functies aanroepen op de server, via javacsript
- Meerdere variabelen naar de server toesturen

Maar wat ik ook zou willen, maar nergens kan vinden/achter kan komen is:

- De server alleen iets naar de client stuurd, en de client niet eerst naar de server
- Dat de server meerdere variabelen terugstuurd naar de client.

Vooral dat laatste heb ik geen idee van hoe dat moet, zou ik dan bijvoorbeeld een string array kunnen terugsturen? Je kunt namelijk toch niet return Test1, Test2, Test3; doen?

Verder begrijp ik het gebruik van Atlas volledig en kan ik er hele leuke dingen mee doen :)
Pagina: 1