循环中的 RegisterStartupScript

RegisterStartupScript in a loop

本文关键字:RegisterStartupScript 循环      更新时间:2023-09-26

我在循环中从 C#(在.aspx.cs文件中)调用 javascript 函数(在.aspx文件中)时遇到问题。下面的代码不起作用。什么也没发生。怎么了?我读了一些关于堆栈溢出的帖子,但没有任何效果。

这是代码:

int i = 1;
while (i<10)
{
    Page.ClientScript.RegisterStartupScript(this.GetType(), "key" + i.ToString(), "myFunction('" + i + "')", true);
    i++;
}

JavaScript 函数

function myFunction(i){
    document.write(i);
}

但是这段代码有效,但我不感兴趣。

string something = "something";
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "myFunction('" + something + "')", true);

而不是你的循环,试试这个:

        ClientScriptManager cs = Page.ClientScript;
        string csName = "MyScript";
        Type csType = this.GetType();
        for(int i = 1; i <= 10; i++)
        {
            string currentName = string.Format("{0}{1}", csName, i);
            if (!cs.IsStartupScriptRegistered(csType, currentName))
            {
                string csText = string.Format("myFunction('{0}');", i);
                cs.RegisterStartupScript(csType, currentName, csText, true);
            }
        }