0

我喜欢将字符串从 C# 传递给 javascript 变量。简单的方法是这样的:

string aaa = "hello";

接着

<script>
    var javacriptVariable = "<%=aaa%>";
</script>

但是,我问是否有另一种方法,而不使用<script>块来使该变量成为 javascript 等价物,直接使用 C# 代码。

谢谢你。

4

3 回答 3

2

将其写入InnerHtmlC# 中的 div,并innerHTML从您的 JavaScript 代码中获取 div。

笔记:

  1. 您必须制作 div runat="server"
  2. InnerHtml 注意 C#和 js之间大小写(大写/小写)的区别innerHTML
于 2013-10-08T18:11:30.690 回答
0

我实际上创建了一个名为 Ngon 的 nuget pacakge 它正是这样做的:

http://www.nuget.org/packages/NGon/

这是铁轨宝石Gon的裂痕

于 2013-10-08T17:50:40.437 回答
0

好吧,最好的方法是包含JSON.NET并输出它:

var aaa = <%= JsonConvert.Serialize(aaa) %>;

然后,无论它是字符串、整数、数组还是其他任何东西,它都会以 JS 可以处理的方式序列化。如有必要,这还将处理任何类型的转义(例如aaa = "Hello \"World\"!"

另一种选择是使用处理程序/AJAX 检索它(但这对于这样一个简单的任务来说开销太大了)。

最后,您可以注册脚本:

Type type = this.GetType();
string scriptName = "assign aaa";
ClientScriptManager clientScript = Page.ClientScript;
if (!clientScript.IsClientScriptBlockRegistered(type, scripName))
{
    StringBuilder sb = new StringBuilder();
    sb.Append("<script type=\"text/javascript\">")
      .AppendFormat("var aaa = {0};", JsonConvert.Serialize(aaa))
      .Append("</" + "script>");
    clientScript.RegisterClientScriptBlock(type, scripName, sb.ToString());
}

但无论如何,以上只是以<script>标签结尾的更复杂的方式。

于 2013-10-08T17:35:53.893 回答