我有“自定义控件”项目,它构造一个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;'> \" + 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();
}
}
注意:在附加之前,调用应用程序会添加结束脚本标记。
答案 0 :(得分:0)
我的建议是将整个代码放在一个txt文件中,这个txt文件应该标记为embedded resource。如果文本的某些部分应根据变量值进行格式化,则解决方案是使用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!");
}
我希望它有所帮助。最好的问候。