如何将字符串从C#传递给javascript变量

时间:2013-10-08 17:33:47

标签: c# javascript asp.net string variables

我想将C#中的字符串传递给javascript变量。 简单的方法就像:

string aaa = "hello";

然后

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

但是,我问是否有另一种方法没有使用<script>块将该变量变为javascript等效,直接使用C#代码。

谢谢。

3 个答案:

答案 0 :(得分:2)

将其写入C#中的div InnerHtml,并从JavaScript代码中获取div innerHTML

注意:

  1. 你必须制作div runat="server"
  2. 注意外壳之间的差异(大写/小写) C#的InnerHtml和js的innerHTML

答案 1 :(得分: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>标签。

答案 2 :(得分:0)

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

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

这是rails gem Gon

的一部分