2013-07-30 63 views
0

我有下面的代碼塊一個問題:執行從代碼隱藏jQuery腳本拋出異常

Dim scriptHere As System.Web.UI.HtmlControls.HtmlGenericControl = control.Page.FindControl("scriptHere") 
      Dim controlID As String = "" 
      Dim disabled As String = IIf(isDisabled, "true", "false") 
      If TypeOf (control) Is ASPxEditBase Then 
       controlID = control.ID 
      End If 
      Try 
       control.ReadOnly = isDisabled 

       Dim script As String = "" 

       script &= "<script type=""text/javascript"">" & vbCrLf 

       script &= "// <![CDATA[" & vbCrLf 
       script &= "try {" & vbCrLf 
       script &= "$('#<%= " + controlID + ".ClientID %>').attr('disabled', " + disabled + ");" & vbCrLf 

       If selectedIndex <> -1 Then 
        control.SelectedIndex = selectedIndex 
        script &= "" + controlID + ".SetValue(" + selectedIndex.ToString() + ");" & vbCrLf 
       End If 
       script &= "} catch (e) { " & IIf(showErrors, "alert(e.message);", ";") & " }" & vbCrLf 
       script &= "// ]]> " & vbCrLf 


       script &= "</script>" & vbCrLf 


       scriptHere.InnerHtml &= script 
      Catch ex As Exception 
       Console.Out.WriteLine(ex.ToString()) 
      End Try 

的問題是,它拋出我的異常。 更準確地說,它只是說「未定義」,沒有別的。 我想,問題在於這一行內:

script &= "$('#<%= " + controlID + ".ClientID %>').attr('disabled', " + disabled + ");" & vbCrLf 

此外,本是一個jQuery的命令,我可以假設的例外是由「$」造成的。

額外的信息:

  1. 我有所需的jQuery庫鏈接。
  2. 我曾嘗試添加jQuery(document).ready(function() {/.../});
  3. 我已經嘗試使用ScriptManager執行相同的腳本。
  4. 我曾嘗試調用的Page_Load這一分,而不是更早的 階段頁面的渲染
  5. 我自己也嘗試這個腳本 塊中鏈接了jQuery庫。

這就是現在。 在此先感謝。

+0

你能看到正在呈現到頁面上的JavaScript(通過查看頁面源)嗎?這是否按預期寫入? – evilbhonda

+0

是啊,這裏是 '<腳本類型= 「文/ JavaScript的」> // <![CDATA [ jQuery的(文件)。就緒(函數(){ 嘗試{ $('#<%= cbRelation (')')。attr('disabled',true); cbRelation.SetValue(1); } catch(e){alert(e.message);} }); //]]> ' – Mitsosp

回答

1

好吧,看看這會工作 -

script &= "$('#" + controlID.ClientID + "').attr('disabled', " + disabled + ");" & vbCrLf

它看起來像內嵌VB不會撤出正確的客戶端ID,但你已經得到了它的服務器端,所以你應該能夠一次構建完整的腳本字符串。

+0

是的,它工作正常,錯誤消失了。 非常感謝。 – Mitsosp