C# 页面加载时未插入脚本

C# 页面加载时未插入脚本,c#,javascript,html,asp.net,json,C#,Javascript,Html,Asp.net,Json,我正在开发一个模拟类,在这个类中,我需要假装从数据库中获取数据,并在json数组中将其发送到javascript。然而,我不能让它工作,我已经遵循了几个教程和例子,它似乎我错过了一些东西 这是我在CodeBehind文件中的代码: public class Segment : System.Web.UI.Page { public int[,] GetAllSegments() { int[,] segments = new int[,] { { 1, 2 },

我正在开发一个模拟类,在这个类中,我需要假装从数据库中获取数据,并在
json数组中将其发送到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);
    }
}
公共类段:System.Web.UI.Page
{
public int[,]GetAllSegments()
{
int[,]段=新的int[,]{{1,2},{3,4},{5,6},{7,8};
返回段;
}
公共无效页面加载(对象发送方,事件参数e)
{
int[,]allSegments=GetAllSegments();
JavaScriptSerializer serializer=新的JavaScriptSerializer();
string json=serializer.Serialize(所有段);
string script=string.Format(“var allSegments={0}”,json);
this.ClientScript.RegisterClientScriptBlock(this.GetType(),“ClientScript”,script,true);
}
}
脚本从未出现过,我也尝试过使用
RegisterStartupScript
,但也不起作用

在我的HTML页面的顶部,我包含了以下内容:


有人能发现问题吗?非常感谢您的帮助

重点是,
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);
int[,]allSegments=GetAllSegments();
JavaScriptSerializer serializer=新的JavaScriptSerializer();
string json=serializer.Serialize(所有段);
string script=string.Format(“var allSegments={0};”,json);
this.ClientScript.RegisterClientScriptBlock(this.GetType(),“ClientScript”,script,false);

我所做的另一个小改动就是在js代码的末尾添加分号。

您试过调试它吗?你的代码执行了吗?是的,我调试过,没有抛出错误。不确定我的代码是否得到执行,因为什么都没有发生。请在这里输入脚本中得到的内容。将调试器放入脚本中,然后选中,您的代码应该是段而不是仪表板。感谢您的输入,尝试了这两种解决方案,但它似乎仍然不起作用。为了确定,必须在我的
Dashboard.aspx
文件中显示一个带有
var allSegments…
code的脚本标记,对吗?@Jef:是的,没错。我只是复制了你的代码,做了和我在答案中解释的一样,得到了视图源,它在那里,并且在控制台中检查了<代码>所有段
,你检查了控制台吗?哇,这很奇怪,是的,我已经多次检查了控制台和源代码。@ JEF:所以我认为还有一点要考虑,你在Segment.aspx页面中有你的onLoad,但你在dashboard.aspx中寻找它,这可能是问题所在!你检查过了吗?顺便问一下,我刚刚在我的HTML页面中编辑了一些内容,在
Dashboard.aspx.designer.cs
中出现了一个错误,需要一个标识符,类名已消失,这与我的问题有关吗?