【发布时间】:2015-08-26 03:42:12
【问题描述】:
我正在开发一个现有的 ASP.Net 应用程序,遇到了一段有趣的 JavaScript,我一直在想。
一些变量被声明为文字,它们不在字符串中。例如,完成了这样的事情:
<script type="text/javascript">
var jsonData = <asp:Literal ID="MyJsonObject" runat="server" />;
......
</script>
在服务器端代码(C#)中,这些标签实际上是从 JsonTextWriter 更改的,类似于:
var stringBuilder = new StringBuilder();
var stringWriter = new StringWriter(stringBuilder);
using (var jsonWriter = new JsonTextWriter(stringWriter))
{
jsonWriter.Formatting = Formatting.Indented;
jsonWriter.WriteStartObject();
jsonWriter.WritePropertyName("someProperty");
jsonWriter.WriteValue("someValue");
jsonWriter.WriteEndObject();
}
MyJsonObject.Value = stringBuilder.ToString();
这反过来又导致 jsonData 变量能够在客户端代码中用作 Json 对象。
我注意到的是, 如果我在标签周围加上单引号并将其更改为:
<script type="text/javascript">
var jsonData = '<asp:Literal ID="MyJsonObject" runat="server" />';
......
</script>
这不起作用,因为它不再作为 Json 对象出现,而是作为实际字符串出现。但是,正如我所料,当它只是一个普通标签时,我会从 Visual Studio 收到几个语法错误。
所以我的问题是:
这是通常可以接受的事情还是我应该避免保留这样的事情?是的,它有效,但我觉得它不合适。
我发现了一个few different questions 似乎与这里相关,但似乎没有一个可以提供任何关于我的特殊情况的见解。
【问题讨论】:
标签: javascript c# json