2012-03-26 64 views
0

我有以下代碼,這裏的CssClass是String類型的。將表達式值傳遞給JavaScript函數

<asp:Panel ID="Panel1" runat="server" title="<%# Title %>" class="<%# CssClass %>"> 
<asp:Panel ID="Panel2" runat="server" Style="padding-top: 20px; color: Red"> 
    Invalid Credential 
</asp:Panel> 
<asp:Panel ID="Panel3" runat="server" Style="text-align: center; padding-top: 50px;"> 
    <telerik:RadButton ID="LoginFaild" runat="server" Text="Ok" Font-Size="14px" Width="100px" 
     OnClientClicked='<%# "function(button, args){closeDialog(" + CssClass + ");}" %>' /> 
</asp:Panel> 

現在我想這個字符串值傳遞給JavaScript函數closeDialog()是:

var closeDialog = function (className) {  
    $("." + className).dialog("close"); 
} 

當我點擊我得到

按鈕loginError未定義

在我的Web開發工具欄的Firefox。

我該如何解決這個問題?

回答

1

假設CssClass在c#中設置,您不需要在關閉對話框構造函數中指定內聯CssClass屬性。更改closeDialog功能:

var closeDialog = function() {  
    $("." + <%= CssClass %>).dialog("close"); 
} 

然後你OnClientClicked事件可以被改寫爲:

OnClientClicked="function(button, args){ closeDialog(); };" or OnClientClicked="closeDialog();" 

編輯:

腳本在頁面頂端

var cssClass = '<%= CssClass %>'; 

關閉對話功能

var closeDialog = function() {  
    $("." + cssClass).dialog("close"); 
} 
+0

感謝您的回覆。但實際上'closeDialog()'在JS文件中,我可以把它放在aspx頁面中,因爲這個方法將被用在各種不同的地方。 – 2012-03-26 19:58:32

+0

這是不可能的嗎? – 2012-03-26 19:59:15

+0

好的。您可以在aspx頁面的頂部設置一個javascript變量'cssClass',然後在該函數中使用該變量,而不是在該函數內部設置腳本塊。我編輯了我的答案。 – tjscience 2012-03-26 20:05:05