[英]Create a correct string in JavaScript from result of C# inline code
I have to use some inline code in my asp.net application. 我必须在我的asp.net应用程序中使用一些内联代码。 Fe i have following inline code: 我有以下内联代码:
<% FlashRenderer.Render(); %>
That will return me following markup: 这将在标记后返回我:
<div id="flashGame" style="color:red"></div>
<script type="text/javascript" language="javascript">
var flash = document.getElementById('flashGame');
...
</script>
</div>
I need to assign a result of FlashRenderer.Render() to javascript variable, then using jquery append that markup to some parent div. 我需要将FlashRenderer.Render()的结果分配给javascript变量,然后使用jquery将该标记附加到某个父div。 I try follwing: 我试着跟随:
<script type="text/javascript">
var swfString = '<%= FlashRenderer.Render() %>';
$("swf").append(swfString);
</script>
And it fails, because result string from inline inclusion has both single and double quotes, so when i use single quotes to wrap '<%= FlashRenderer.Render() %>'
i always have a syntax error in browser console. 它失败了,因为内联包含的结果字符串有单引号和双引号,所以当我使用单引号来包装'<%= FlashRenderer.Render() %>'
我总是在浏览器控制台中出现语法错误。 I try to replace "'" with "\\'" but error happens before i got string created. 我尝试用“\\”替换“'”,但在创建字符串之前发生错误。
Here is screenshot what i have after try to use JavaScriptSerializer().Serialize 这是我尝试使用JavaScriptSerializer()之后的截图。序列化
You can use a JSON serializer, which will give you a Javascript-safe string, including the quotes, and it will handle the line breaks as well: 您可以使用JSON序列化程序,它将为您提供包含引号的Javascript安全字符串,并且它还将处理换行符:
--JSON.NET--:
var x = <%= JsonConvert.SerializeObject(FlashRenderer.Render()) %>;
or
--System.Web.Script.Serialization--:
var x = <%= new JavaScriptSerializer().Serialize(FlashRenderer.Render()) %>;
This will render something like: 这将呈现如下内容:
var x = "<div id=\"flashGame\" style=\"color:red\"></div>\r\n <script type=\"text/javascript\" ...etc... </div>";
Instead of trying to place it in a string, just have it render hidden on the page and move it: 不要试图将它放在一个字符串中,只需将它隐藏在页面上并移动它:
<div style="display:none">
<%= FlashRenderer.Render() %>
</div>
<script type="text/javascript">
$("swf").append($("#flashGame"));
</script>
Hacky solution if you can't modify the C# code. Hacky解决方案,如果你不能修改C#代码。 Output the function into a textarea then get the value of the textarea with jQuery. 将函数输出到textarea然后使用jQuery获取textarea的值。
<textarea id="swfref" style="display:none;">
<% FlashRenderer.Render(); %>
</textarea>
<script type="text/javascript">
var swfString = $("#swfref").val();
$("swf").append(swfString);
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.