2014-05-05 139 views
1

我試圖從類似這樣的web瀏覽器控件打開一個頁面調用C#方法在我的WinForm:錯誤調用C#方法

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.objectforscripting%28v=vs.110%29.aspx

在我WinForm的我有這樣的方法:

public void Test(String message) 
    { 
     MessageBox.Show(message, "client code"); 
    } 

和我的網頁上,我呼籲: window.external.Test('called from script code');

當我嘗試調用這個函數時,我得到一個javascript錯誤:「無效的過程調用或參數」

但是,當我修改我的表單的方法不採用參數(如public void Test())並相應地在沒有參數的情況下進行javascript調用時,作品沒有任何問題。當我試圖傳遞參數時(我需要這樣做),我只有這個問題。

更多信息: 我也有我的窗體類以下屬性:

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")] 
[System.Runtime.InteropServices.ComVisibleAttribute(true)] 

,我分配ObjectForScripting:

webBrowser1.ObjectForScripting = this; 

調試時就不會出現輸入形式方法塊。

我必須缺少一些簡單的東西。

+0

爲什麼不在服務器上做一個ajax調用?這會更簡單。 – n4gy3

+0

「無效的過程調用或參數」聽起來不像JS錯誤.. – fast

+0

以下工作正常:http://stackoverflow.com/a/23441190/1768303。也許,你可以找出差異。 – Noseratio

回答

0

愚蠢的錯誤。我正在評估函數不是像通常在從其他代碼部分調用函數之前那樣未定義的。由於某種原因,這個評估是錯誤被提出的地方,而不是電話本身(實際上確實沒問題)。

+1

只是好奇,因爲我現在面對完全相同的問題。您是如何解決錯誤的,同時仍然檢查函數是否被定義? –