2013-03-03 28 views
0

我在javascript中使用了一種方法,並在c#中使用了一種方法,現在只需單擊一個按鈕,我想將它們都稱爲它們。只需點擊一次即可撥打javascript和c#方法

首先,我想調用名爲'Find_Direction'的c#方法,因爲它得到輸入onclick,然後我將調用名爲calcRoute的javascript方法後調用。

我是想這一點,但沒有任何的運氣:

<asp:Button id="Button1" UseSubmitBehavior="False" value="GetDirections" onclick="calcRoute" OnClientClick="Find_Direction" runat="server"/> 

以下錯誤彈出:

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS1061: 'ASP.findroute_aspx' does not contain a definition for 'calcRoute' and no extension method 'calcRoute' accepting a first argument of type 'ASP.findroute_aspx' could be found (are you missing a using directive or an assembly reference?) 

回答

3

你要指定在onClick事件的JavaScript函數名。所以在這裏把C#函數名

C#代碼:

protected void Find_Direction (object sender, EventArgs e) 
{ 
    // do your work 

    // Register your javascript function 

    Page.ClientScript.RegisterStartupScript(this.GetType(), "script", " <script>calcRoute();</script>"); 
} 

您的標記:

<asp:Button id="Button1" value="GetDirections" onclick="Find_Direction" runat="server"/> 

案例2:先致電聯絡,服務器端功能的JavaScript功能

JavaScript函數

function calcRoute() { 

     alert('test') 
     return true; 
    } 

您的標記

<asp:Button id="Button1" value="GetDirections" onclick="Find_Direction " OnClientClick="return Find_Direction()" runat="server"/> 

通過這個,你可以調用javascript函數,然後服務器端,但要確保你從javascript函數調用服務器端函數返回true。

我希望,現在你可以解決你的問題。 :)

+0

這種方式會首先執行find_direction方法嗎? @Sachin – 2013-03-03 09:11:34

+1

不,我認爲你想在calcRoute之後執行find_Direction。但是,如果您希望find_Direction首先執行,而不是在像OnClientClick =「return Find_Direction」這樣的客戶端上點擊它,那麼沒有問題。 – Sachin 2013-03-03 09:53:14

+0

我仍然在努力。因爲它似乎不是在javscript方法中。 @Sachin – 2013-03-03 10:33:39

2

您需要一個名爲calcRoute的代碼隱藏(aspx.cs或aspx.vb文件)中的事件處理程序。

如果您希望首先執行JS,您應該可以按照您的操作方式進行操作,OnClientClick指向JS函數,而OnClick指向C#/ VB方法(事件處理函數) 。

如果你想確保JS在你的C#代碼後被調用,你應該在後端處理點擊操作,然後通過註冊啓動腳本將JS發送回瀏覽器。這將導致完整的回傳,除非您使用更新面板。在您的事件處理程序中,您可以使用Page.RegisterStartupScript註冊啓動腳本以將JavaScript命令發送回瀏覽器。在這種情況下,您根本不想使用OnClientClick。

+0

但哪些將被首先處理? calcRoute或Find_Direction方法。我想先處理Find_Direction。 @Adam Plocher – 2013-03-03 09:05:15

+0

哦,對不起,我以爲你想以另一種方式。應該在回發/事件處理程序之前執行OnClientClick。 – 2013-03-03 09:06:20

相關問題