Tuesday, June 29, 2010

Passing a own class back to the server

Class Examples

The first example will return an own class that has some public fields to be used on the client-side JavaScript.

public class MyClass

{

public string FirstName = "";

public string FamilyName = "";

public int Age = 0;

}

It is also working if you inherit from a class and add your own properties to the new class.

public class MyInheritedClass : MyClass

{

public double SizeInMeters = 0.0;

public Guid ID = Guid.Empty;

}

Passing a own class back to the server

Next we want to pass the MyClass object back to the server. The first call will get an MyClass object from the server like we have done above. Then we want to modify the .FirstName property on the client, submit the object to the server, modify the .FamilyName there and see the results.

function doTest3() {

// synchronous call to the server-side method to get an MyClass object

var p = AJAXDemo.Examples.Classes.Demo.GetMyClass().value;

p.FirstName = "CLIENT-SIDE CHANGE"; // change one property

AJAXDemo.Examples.Classes.Demo.PutMyClass(p, doTest3_callback);

p = null;

}

[AjaxMethod]

public MyClass PutMyClass(MyClass c)

{

c.FamilyName = "SERVER-SIDE CHANGE"; // change one property

return c;

}

Create converters for your classes

One new feature is the use of converters to serialize a .NET object or deserialize a JSON string. In this example I am using a custom IJavaScriptConverter. This converter will return a new class on the client-side JavaScript that may have more properties or methods that are not returned using the built-in custom object converter (which will only return public fields and properties).

function doTest4() {

var p = AJAXDemo.Examples.Classes.Demo.GetPerson().value; // synchronous call to the server-side method

// access the properties of the Person object here

alert(p.FirstName);

// Now, we want to save it, we call the save method of the instance

// and get a boolean if succeded.

var b = p.save();

}

Ref :http://www.ajaxpro.info/Examples/Classes/default.aspx

No comments:

Post a Comment