C#for javascript中的多级引号

C#for javascript中的多级引号,c#,javascript,escaping,special-characters,C#,Javascript,Escaping,Special Characters,我有一个“自定义控件”项目,它构造了一个javascript字符串以插入到另一个应用程序中。应用程序调用“自定义控件”来确定某些行为 我遇到的问题涉及到在包含javascript的字符串中需要多个级别的引号。在下面的版本中,我尝试转义内部引号,但IE抛出一个错误(由于错误80020101,无法完成操作)。过去,我通过将javascript放在一个单独的js文件中并从插件代码中调用它,解决了类似的问题。但是,在这种情况下,我无法让应用程序“查看”js文件。如何将javascript放入可以传递的字

我有一个“自定义控件”项目,它构造了一个javascript字符串以插入到另一个应用程序中。应用程序调用“自定义控件”来确定某些行为

我遇到的问题涉及到在包含javascript的字符串中需要多个级别的引号。在下面的版本中,我尝试转义内部引号,但IE抛出一个错误(由于错误80020101,无法完成操作)。过去,我通过将javascript放在一个单独的js文件中并从插件代码中调用它,解决了类似的问题。但是,在这种情况下,我无法让应用程序“查看”js文件。如何将javascript放入可以传递的字符串中

有关守则如下:

class Class1 : Literal
{
    protected override void CreateChildControls()
    {
        var controlHtml = new StringBuilder();

        controlHtml.Append("<script type='text/javascript'>");
        controlHtml.Append("$('#prodcon_error_msg').css('display', 'none');" +
                           "$('#prodcon_client_id_filterimg').click(function() {" +
                           "ShowFilterDialog('Client ID', 'clientId');" +
                           "});");
        controlHtml.Append("function ShowFilterDialog(criteriaName, filterTitle) {" +
                           "alert('show dialog code here for ' + criteriaName);" +
                           "var filterDialogDiv = document.createElement('DIV');");

        controlHtml.Append("filterDialogDiv.innerHTML = \"<div id='customaccountcriteriafilterdialog' class='dialogback'><div class='dialogheadingarea'>" +
                            "<span class='dialogtitle' style='float: left;'>&nbsp;&nbsp;\" + filterTitle + \" Lookup</span>" +
                            "<img class='dialogcloseimage' onmouseup=\"removeElement('customaccountcriteriafilterdialog');\" src='../../images/boxy.gif'/>" +
                            "</div><br/>Key word: <input type='text' id='criteriaFilterKeyword' /></div>");

        controlHtml.Append("filterDialogDiv.style.position = 'absolute';" +
                           "filterDialogDiv.style.left = '300px';" +
                           "filterDialogDiv.style.top = '85px';" +
                           "filterDialogDiv.style.Zindex = 4; " +
                           "document.body.appendChild(filterDialogDiv);" +
                           "}");

        this.Text = controlHtml.ToString();
    }
}
Class1类:文本
{
受保护的覆盖无效CreateChildControls()
{
var controlHtml=新的StringBuilder();
controlHtml.Append(“”);
controlHtml.Append($('#prodcon_error_msg').css('display','none');“+
“$('#prodcon_client_id_filterimg')。单击(函数(){”+
ShowFilterDialog('客户端ID','客户端ID')+
"});");
Append(“函数ShowFilterDialog(criteriaName,filterTitle){”+
“警报('在此处显示'+criteriaName'的对话框代码);”+
“var filterDialogDiv=document.createElement('DIV');”;
controlHtml.Append(“filterDialogDiv.innerHTML=\”“+
“\”+filterTitle+\“查找”+
"" +
“
关键词:”; Append(“filterDialogDiv.style.position='absolute'+ “filterDialogDiv.style.left='300px'+ “filterDialogDiv.style.top='85px'+ “filterDialogDiv.style.Zindex=4;”+ “document.body.appendChild(filterDialogDiv);”+ "}"); this.Text=controlHtml.ToString(); } }

注意:结束脚本标记是在追加之前由调用应用程序添加的。

我的建议是将整个代码放在一个txt文件中,该txt文件应标记为。如果文本的某些部分应根据变量值进行格式化,则解决方案是使用string.Format

要加载txt文件,只需使用

try
   {
      var _assembly = Assembly.GetExecutingAssembly();
      var _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFile.txt"));
var text = _textStreamReader.ReadToEnd();

// use the variable text for something...
   }
   catch
   {
      MessageBox.Show("Error accessing resources!");
   }

我希望这会有所帮助。致以最良好的祝愿。

您是否检查过呈现的HTML,并确认生成的HTML/JavaScript是正确的?如果没有,具体是哪些方面无法正确输出?您不应该有这样的代码。这些内容应该在标记文件中,甚至是单独的.js文件中,而不是在C代码中。仅供初学者使用,我可以e缺少它,但我不知道你在哪里关闭你的脚本标签?侧记:我认为这是一个很好的例子,如何不写代码-它混合尽可能多的语言:C,JavaScript,HTML,CSS;混合不同类型的操作HTML DOM;混合jQuery和原始DOM元素创建。考虑将代码分割成JavaScript /CS。S/HTML部分-无需三重转义引号…您的innerHTML设置看起来错误,在第四次调用Append时,您在标记的开头转义双引号,但在结尾没有转义双引号。看起来这将呈现为
filterDialogDiv.innerHTML=“…
”,缺少尾随双引号和
结束语句。