Ajax.net使得服务器端的数据模型能够被javascript所使用

Ajax.net机制使得服务器端的数据模型(即类及其之间的关系)能够被客户端的javascript所使用。而且通过Ajax.net,即使是使用了抽象机制和继承机制的类也能够被客户端的javascript所调用。
以下我们通过测试的代码来说明如何通过Ajax.net使javascript能够访问使用了抽象和继承机制的服务器端的类。
 1.声明抽象类MyClass,其中定义了字符串的数据类型name.
[Serializable()]
public abstract class MyClass
{
    protected string name;
    public MyClass(string name){this.name = name;}
    public string Name{get{return name;}}
    public abstract  void TTTT();
}
2.定义类MyInclude。
[Serializable()]
public class MyInclude
{
    private string ttt;
    public MyInclude(string ttt){this.ttt = ttt;}
    public string Ttt{get{ return ttt;}}
}
 
3. 定义抽象类MyClass的子类MyClassSub,其中包括其它的复杂对象类型 - MyInclude类型的变量testObj。
[Serializable()]
public class MyClassSub:MyClass
{
    protected string test;
    private MyInclude[] testObj;
    public MyClassSub(string name, string test) : base(name)
    {
        this.test = test;
        testObj = new MyInclude[] { new MyInclude("OK") };
    }
    public MyInclude[] TestObj{get{return testObj;}}
    public string Test{get{return test;}}
    public override void TTTT(){}
}
 
4. 在服务器端采用C#实现的Ajax服务器端响应函数MyFunc()中,可以使用MyClassSub来作为返回值的类型
    [Ajax.AjaxMethod()]
    public MyClassSub MyFunc()
    {
        return new MyClassSub("GHJ", "GOOD");
    }
 
5.在页面代表的javascript代码中,GetServerAction函数调用了服务器端的响应函数MyFunc(),在Callback的处理函数MyFunc_CallBack中,我们可以直接使用服务器端声明的类MyClassSub来作为对象。其中response.value的类型就是MyClassSub,response.value.TestObject的类型为MyInclude
    <script language="javascript" type="text/javascript">
    function GetServerAction()
    {
         TempAjaxClass.MyFunc(MyFunc_CallBack);
    }  
    function MyFunc_CallBack(response)
    {
          alert(response.value.Name);                 //弹出框显示 'GHJ'
          alert(response.value);                             // 弹出框显示[object object]
          alert(response.value.TestObj);               // 弹出框显示[object]
          alert(response.value.TestObj[0].Ttt);     // 弹出框显示'OK'
    }  
    </script> 
既然javascript能够使用服务器的抽象机制和继承机制,那么在架构和设计Ajax.net的系统的时候,我们就可以只在服务器端维护一份数据模型,通过[Serializable()]以及Ajax.net的技术就可以将服务器端的数据模型提供给客户端的javascript代码调用,而不需要在javascript中也维护对应的数据模型。

 
 

版权声明:本文为wind_zsu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。