2012-01-08 97 views
1

我無法調用javascript來理解爲什麼不能javascript代碼下面不是從代碼中調用後面從代碼隱藏的C#&Asp.Net

我有這樣

function callsCox(res) { 
    alert(res); 
    } 

一個簡單的JavaScript塊從我的代碼後面:

.... 
string res="COX23"; 
string script = String.Format("callsCox({0})", res); 
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "Cox",script,true); 

我錯過了什麼嗎?沒有任何例外或錯誤。

+0

「這是不工作」是不是問題的一個很好的說明。 _什麼不工作?發生了什麼,你不希望發生?什麼不是?錯誤?例外? – Oded 2012-01-08 13:17:56

+0

嗨Oded,編輯了我的問題,JavaScript代碼不能從代碼隱藏方法調用。沒有任何錯誤或例外。 – 2012-01-08 13:21:33

+0

第一個調試步驟應該檢查來自服務器的實際html ...它是否包含對callsCox的調用? – 2012-01-08 13:33:57

回答

2

Page.ClientScript.RegisterStartupScript對我來說看起來還行(可能錯過了某些東西)。可以嘗試的東西

  1. 給調用添加撇號 - 它作爲一個對象來了。嘗試作爲字符串

    string script = String.Format(「callsCox('{0}')」,res);

  2. 是否在更新面板部分回發後調用字符串腳本Page.ClientScript.RegisterStartupScript。這可能會影響它

  3. 我知道功能沒有被發現,如果他們在同一個頁面。嘗試移動到外部的js文件。不要問我爲什麼這樣解決了問題,但是對我而言,過去有幾次。

  4. 僅用於調試目的將所有功能排除在外,試着讓警報像這樣工作。它至少會隔離問題,如果它工作

    this.Page.ClientScript.RegisterStartupScript(this.GetType(),「Cox」,「alert('Does this work?')」,true);

  5. 查看頁面的來源。該功能是否寫入頁面(或來自第4點的警報)。它應該是。如果你在this.Page.ClientScript.RegisterStartupScript方法上放置了一個斷點,它會被擊中嗎?似乎它可能不是。

道歉沒有給你'嗨,這是解決方案'類型的答案。過去我曾經有過這樣的東西,我發現它是一個剝離的東西,直到問題被隔離爲止。其他人當然可以發現一個直接的問題。祝你好運。

+0

桶,試着按照你所描述的步驟,奇怪我甚至不能得到「警報」,正如你在步驟4中所述。 – 2012-01-08 13:35:21

+0

@Samuel。只需將第4點中的this.Page.ClientScript.RegisterStartupScript替換爲第1點。它應該嵌入警報,並且警報將會出現。如果這不起作用,那麼它不能與JS功能有關。所以它必須是錯誤的註冊方法。我會用另一個想法編輯 – 2012-01-08 13:43:09

+0

是Buket,現在顯示警報..唯一改變的是將Cox替換爲「script」並添加';'結束alert.Let我嘗試將變量傳遞給Js函數。 – 2012-01-08 13:45:24

1

這個工作對我來說:

public static void ShowAlert(Page page, String message) 
{ 
    String Output; 
    Output = String.Format("alert('{0}');",message); 
    page.ClientScript.RegisterStartupScript(page.GetType(), "Key", Output, true); 
}