【问题标题】:Executing jQuery script from code-behind throws Exception从代码隐藏执行 jQuery 脚本抛出异常
【发布时间】:2023-03-05 20:52:01
【问题描述】:

我对以下代码块有疑问:

    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 上调用这个 sub 而不是之前的 页面渲染阶段
  5. 我还尝试在此脚本中链接 jQuery 库 阻止。

暂时就这些了。 提前致谢。

【问题讨论】:

  • 你能看到被渲染到页面上的 javascript(通过查看页面源代码)吗?是按预期写的吗?
  • 是的,这里是&lt;script type="text/javascript"&gt; // &lt;![CDATA[ jQuery(document).ready(function(){ try { $('#&lt;%= cbRelation.ClientID %&gt;').attr('disabled', true); cbRelation.SetValue(1); } catch (e) { alert(e.message); } }); // ]]&gt; &lt;/script&gt;

标签: jquery asp.net devexpress vb.net-2010


【解决方案1】:

好的,看看这是否可行 -

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

看起来内联 VB 没有提取正确的客户端 ID,但您已经在服务器端获得了它,因此您应该能够一次性构建整个脚本字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2012-11-28
    • 2012-01-17
    • 2012-03-30
    相关资源
    最近更新 更多