利用Anthem.net 实现前台javascript调用服务器端c#函数 及流程分析

Javascript调用服务器端c#函数(页面函数, 母版函数, 控件函数), 这个功能很早anthem.net就提供了, 且在帮助手册中有相关的例子, 但自己没怎么注意, 今天看同事研究anthem.net时, 突然发现了 . 看来anthem.net给我们留下的发挥空间还是挺大的.
下面举一个简单的例子, 及分析下执行流程.

例子如下:

  1. CS定义函数Add

    public int Add(int a, int b) { return a + b; }
    
    
  2. 添加函数的属性, 这样才能在客户端调用他.

        [Anthem.Method]
        
    public int Add(int a, int b)
        {
           
    return a + b;
        }
  3. 在页面加载时注册Anthem.Manager

    void Page_Load() { Anthem.Manager.Register(this); }
    
    
  4. 在aspx页面添加以下html控件

    <input id="a" size="3" value="1" />
    <input id="b" size="3" value="2" />
    <button onclick="DoAdd(); return false;" type="button">Add</button>
    <input id="c" size="6">
  5. 添加javascript函数, 用来调用服务器端方法.

    <script type="text/javascript">
    function DoAdd() { 
        Anthem_InvokePageMethod(
        'Add', 
        [document.getElementById('a').value, document.getElementById('b').value],
        
    function(result) { document.getElementById('c').value = result.value; } 
        );
    }
    </script>
  6. 第一个参数"add"是服务器端函数名称

    Anthem_InvokePageMethod(
    'Add',
    [document.getElementById('a').value, document.getElementById('b').value],
    function(result) { document.getElementById('c').value = result.value; }
    );

  7. 第二个参数时传给服务器端函数的参数

    Anthem_InvokePageMethod(
    'Add',
    [document.getElementById('a').value, document.getElementById('b').value],
    function(result) { document.getElementById('c').value = result.value; }
    );

  8. 第三个参数是服务器端函数执行后的回调方法.

    Anthem_InvokePageMethod(
    'Add',
    [document.getElementById('a').value, document.getElementById('b').value,
    function(result) { document.getElementById('c').value = result.value; }
    );

  9. 回调结果result是一个对象, 具有一个value属性和error属性. 如果服务器端函数调用出现错误, 则记录在error中, value是返回服务器端方法的执行结果.

    Anthem_InvokePageMethod(
    'Add',
    [document.getElementById('a').value, document.getElementById('b').value,
    function(result) { document.getElementById('c').value = result.value; }
    );

posted @ 2008-12-31 16:51  doing_zzh  阅读(371)  评论(0编辑  收藏  举报