2014-03-19 20 views
0

我使用Ext.Net 2.5和App.Direct一個問題:當Ext.Net App.direct被定義了嗎?

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

問題在身體的onload存在過。 當我調用Ext.onReady中的直接方法時,它給了我這個錯誤:「不能調用未定義的GetAll。」

但是,當我把它稱爲一個點擊按鈕處理程序它沒有問題。

所以,問題是:

當App.direct定義?

回答

0

在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> 

Here是對ResourcePlaceHolder模式的可能選項的描述。

相關問題