页面加载时未插入脚本

Script not inserted on page load

本文关键字:插入 脚本 加载      更新时间:2023-09-26

我正在研究一个模拟类,我需要从数据库中获取数据并将其发送到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" %>

有人能发现问题吗?任何帮助都非常感激!

关键是,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代码的末尾添加分号。