これが必要なすべてのコードです。
関数内で、テキストボックスラジオボタンリストなどのコントロールを作成します。コントロールが作成されたら、それをパネルに配置してから、次の操作を行います。
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(sw);
panel.RenderControl(hw);
Session["formHTML"] = sb.ToString();
Label1.Text = sb.ToString();
Label1 のテキストは完璧に出てきます。これは、panel.RenderControl(hw) 行から取得したパネルの html です。これが私の問題です。私が持っているボタンのクリックで:
Response.Redirect("~/preview.aspx");
これが私の preview.aspx ページのコードです。
<script type="text/javascript">
function preview() {
var html = '<%= Session["formHTML"]%>';
alert(html);
$('#previewForm').empty();
$('#previewForm').append(html);
}
</script>
<body onload="preview()">
<form id="form1" runat="server">
<div id="previewForm">
</div>
</form>
</body>
私の問題は、セッション変数が関数に渡されることです。私の機能ではアラートを実行しません。今、私は別のセッション変数を持っていますSession["formID"]
. Session[FormID]
の代わりに JavaScript 関数に を入れると、Session["formHTML"]
完全に機能します。ID が 434 の場合、それは私が示した div タグに追加されます。formHTML は文字列として HTML を持つようになりました。何らかの理由でこれが好きではありません。次のエラーが表示されます。
SyntaxError: Unexpected token ILLEGAL Uncaught
ReferenceError: プレビューが定義されていません
これを理解できません。なぜ機能しないのかわかりません。私が試した私のjavascript関数の中で:
var html = '<%= Session["formHTML"].ToString()%>';
と
var html = "'" + '<%= Session["formHTML"]%>' + "'";
HTMLがjavascriptで文字列として適切にレンダリングされていないことがわかったので、これらを試しただけです。このエラーが発生する理由がはっきりとわかりません。そのため、修正方法についてのアイデアがありません。
コメント:
さて、私の関数が次のようになると: var html = '<% Session["formHTML"] %> としてレンダリングされます:
function preview() {
var html = '<div id="panel0" class="panelHeader" class="box ui-draggable" data-ui-widget="draggable">
<span id="mylabel">mylabel</span><span id="lbl0" onclick="deleteControl(panel0)" style="color:Red;">x</span>
</div>';
alert(html);
$('#previewForm').empty();
$('#previewForm').append(html);
}
私には正しいように見えますが、それでもエラーが発生します