0

別のアプリケーションにプラグインするための 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();
    }
}

注: 末尾のスクリプト タグは、追加する前に呼び出し元のアプリケーションによって追加されます。

4

1 に答える 1

0

コード全体を 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!");
   }

お役に立てば幸いです。よろしくお願いします。

于 2013-05-17T20:44:46.613 に答える