这就是我所拥有的:
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(); })";
}
我这样做的原因是因为我正在重复使用代码块,因为我在整个应用程序中有几个相同的控件。
另外,当我使用标记显示表达式(&lt;%= =&gt;)时,它会抛出客户端错误而我的其他客户端控件不起作用,例如我的模态等。
客户端错误是:未捕获错误:语法错误,无法识别的表达式:#&lt;%= accordionActiveIndex.ClientID%&gt;
我可能做错了什么?
答案 0 :(得分:0)
您的错误信息确切地说错了:
您正在向响应中发送字符串<%=accordionActiveIndex.ClientID %>
。该字符串必须由WebForms引擎处理,因此它必须位于aspx页面中。浏览器不知道如何处理该代码,这就是浏览器抛出该错误的原因。
我担心你需要传递给该函数的accordionActiveIndex.ClientID
值,所以你可以这样做(注意新参数,同时忽略字符串中的换行符。我添加了易读性:
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);
}