我正在开发一个模拟类,我需要伪造从数据库中获取数据并将其发送到json array
到javascript。但是,我无法让它工作,我已经遵循了几个教程和示例,看起来我错过了一些东西。
这是CodeBehind
文件中的代码:
public class Segment : System.Web.UI.Page
{
public int[,] GetAllSegments()
{
int[,] segments = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
return segments;
}
public void Page_Load(object sender, EventArgs e)
{
int[,] allSegments = GetAllSegments();
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(allSegments);
string script = String.Format("<script type=\"text/javascript\">var allSegments={0}</script>", json);
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", script, true);
}
}
脚本永远不会出现,我也尝试使用RegisterStartupScript
,但这也不起作用......
在我的HTML页面中,我在顶部包含以下内容:<%@ Page Language="C#" CodeBehind="Dashboard.aspx.cs" %>
有人能发现问题吗?非常感谢任何帮助!
答案 0 :(得分:1)
关键是,RegisterClientScriptBlock
方法中的最后一个参数名为addScriptTags
,因为您已将其设置为true
,所以应删除脚本标记并让C#添加这些标记你:
int[,] allSegments = GetAllSegments();
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(allSegments);
string script = String.Format("var allSegments={0};", json);
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", script, true);
或者只需将addScriptTags
设置为false
:
int[,] allSegments = GetAllSegments();
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize(allSegments);
string script = String.Format("<script type=\"text/javascript\">var allSegments={0};</script>", json);
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", script, false);
我所做的另一个小改动只是将分号添加到js代码的末尾。