当定义Ext.Net App.direct时



我在使用Ext.Net 2.5和App.Direct时遇到问题:

 Ext.onReady(function() {
        App.direct.GetAll({
        success: function (result) {
            currentMessageId = result;
        }
       });
    });

在body onload中也存在这个问题。当我调用Ext.onReady中的直接方法时,它给了我这个错误:"不能调用未定义的gettall。"

但是,当我把它称为click button handler时,它可以正常工作。

所以,问题是:

当App.direct被定义时?

在Page Sources中可以看到如下内容:

Ext.onReady(function () {
    Ext.ns("App.direct");
    Ext.apply(App.direct, {
        TestDirectMethod: function (config) {
            return Ext.net.DirectMethod.request("TestDirectMethod", Ext.applyIf(config || {}, {}));
        }
    });
});

这是DirectMethod呈现给浏览器的方式。

可以看到它位于Ext.onReady函数中。因此,onReady函数在此之前执行。

你可以在使用ResourcePlaceHolder之前强制渲染onReady函数。

<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<script runat="server">
    [DirectMethod]
    public void TestDirectMethod()
    {
        X.Msg.Alert("DirectMethod", "Hello from Server!").Show();
    }
</script>
<!DOCTYPE html>
<html>
<head runat="server">
    <title>Ext.NET v2 Example</title>
    <ext:ResourcePlaceHolder runat="server" Mode="Script" />
    <script>
        Ext.onReady(function() {
            App.direct.TestDirectMethod();
        });
    </script>
</head>
<body>
    <form runat="server">
        <ext:ResourceManager runat="server" />
    </form>
</body>
</html>

这是一个关于ResourcePlaceHolder模式的可能选项的描述。

最新更新