这是所有必要的代码,
在一个函数中,我创建了一个控件,或者是一个文本框单选按钮列表等。一旦创建了控件,我将它放在一个面板中,然后执行以下操作:
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 作为字符串。出于某种原因,它不喜欢这样。我收到以下错误:
Uncaught 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);
}
这对我来说看起来不错,但仍然会产生错误