C# 回发后保持当前Jquery accordion窗格打开

C# 回发后保持当前Jquery accordion窗格打开,c#,jquery,asp.net,C#,Jquery,Asp.net,又是我。 这次我试图在回发后保持当前JQuery accordion窗格的打开状态。我在这里举了一个例子:除了我在周围见过的其他几位。我仍然无法让它工作,与我的唯一区别是,我正在通过我的代码制定脚本,并将其推送到客户端 这就是我所拥有的: public static string getAccordionContainerScript(string container) { return @"$(document).ready(function() { var a

又是我。 这次我试图在回发后保持当前JQuery accordion窗格的打开状态。我在这里举了一个例子:除了我在周围见过的其他几位。我仍然无法让它工作,与我的唯一区别是,我正在通过我的代码制定脚本,并将其推送到客户端

这就是我所拥有的:

    public static string getAccordionContainerScript(string container)
    {
        return @"$(document).ready(function() { var activeIndex = parseInt($('#<%=accordionActiveIndex.ClientID %>').val()); $(" + '"' + '#' + container + '"' + ").accordion({collapsible: true, heightStyle: \"content\", navigation: true,change: function (event, ui) { var index = $(this).accordion(\"option\", \"active\");$('#<%=accordionActiveIndex.ClientID %>').val(index);} }).show(); })";
    }
公共静态字符串getAccordionContainerScript(字符串容器)
{
return@“$(document).ready(function(){var-activeIndex=parseInt($).val());$(“+””+“+”+“+”+容器+”).accordion({可折叠:true,heightStyle:\“content\”,导航:true,change:function(event,ui){var-index=$(this).accordion(\“option\”,“active\”);$(“).val(index)}).show());
}
我这样做的原因是因为我在重复使用代码块,因为我在整个应用程序中有几个相同的控件

另外,当我使用标记显示表达式()时,它会抛出一个客户机错误,而我的其他客户机控件(如我的模态)也不起作用

客户端错误为:未捕获错误:语法错误,无法识别的表达式:#


我可能做错了什么?

您做错了错误消息所说的一切:

您正在向响应发送字符串
。该字符串必须由WebForms引擎处理,因此它必须位于aspx页面中。浏览器不知道如何处理该代码,这就是浏览器抛出该错误的原因

恐怕您需要将
accordioactiveIndex.ClientID
值传递给该函数,这样您就可以执行类似的操作(请注意新参数,并且忽略字符串中的换行符。为了便于阅读,我添加了):

public静态字符串getAccordionContainerScript(字符串容器,字符串clientId)
{
返回string.Format(@“$(document).ready(function(){var activeIndex=parseInt($('#')).val());
$(“+”、“+”、“+”、“+”).accordion({可折叠:true,高度样式:\'content\”,导航:true,更改:函数(事件,ui){var index=$(this).accordion(\'option\,'active\);
//注意这里
$('#{0}').val(index);}.show();}),clientId);
}

我仍然没有让它与您的建议一起工作。我的下一个赌注是手动分配隐藏字段值,通过调用哪个ever事件,因为我已经知道哪个窗格将包含哪些事件。这似乎部分起作用,但我需要找出放置分配代码的最佳位置,因为它仅在e第二次触发事件时,我认为页面加载与此有关。无论如何,谢谢。我是通过手动分配不同事件的窗格来实现的。第一次触发事件时它不起作用的原因是页面加载正在重置值。
public static string getAccordionContainerScript(string container, string clientId)
{
    return string.Format(@"$(document).ready(function() { var activeIndex = parseInt($('#<%=accordionActiveIndex.ClientID %>').val()); 
                           $(" + '"' + '#' + container + '"' + ").accordion({collapsible: true, heightStyle: \"content\", navigation: true,change: function (event, ui) { var index = $(this).accordion(\"option\", \"active\");
                           // pay attention here
                           $('#{0}').val(index);} }).show(); }), clientId);
}