2

我有这个aspx:

 <body>
    <div>
    <script type="text/javascript">
        function NewPage() {
            document.location.href = "http://www.nextservice.pt/"
        }
        </script>
         <form id="form1" runat="server">
 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

                    <asp:Button ID="Btn2" runat="server" Text="OK" onclick="Button2_Click" />

            CODE1: <asp:Label ID="Label1" runat="server" Text="Label" ForeColor="#CC0000" />
        </form>
        </div>
</body>

我正在使用网络表单,我不会在 aspx.cs 上调用此按钮

   public partial class SITE_TESTER : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button2_Click (object sender, EventArgs e)
    {
        string code = TextBox1.Text.ToString();

        if (!verifyCode(code))  // comparing users from table 
        {
            Label1.Text = "Not Exists";  //for invalid code
        }
        else
        {
            Label1.Text = "Exist";  //for sucsseful code
            /*

            I Wont call my JavaScript Function here!!!!

            */
        }
    }
}
4

2 回答 2

7

您可以通过以下方式从asp.net中的服务器端调用javascript方法:

protected void button_Click(object sender , EventArgs e)
{
        string jsMethodName= = "NewPage()";
        ScriptManager.RegisterClientScriptBlock(this, typeof(string), "uniqueKey", jsMethodName, true);

      //or
      //ScriptManager.RegisterStartupScript(this, GetType(), "NewPage()", false); 
}

你可以使用ScriptManager.RegisterStartupScript或者ScriptManager.RegisterClientScriptBlock

所以两者之间的区别解释如下:

假设我们有一个带有以下表单标签的 .aspx 页面:(行号仅供参考)

1. <form id="Form1" runat="server">
2. ..
3. ..
4. ..
5. </form>

现在让我们看看每种方法的主要区别:

A. Page.RegisterClientScriptBlock()将在第 2 行之前插入脚本 Page.RegisterStartupScript()。将在第 4 行之后插入脚本。

B. Page.RegisterClientScriptBlock()通常应该用于封装在函数中的脚本。(因此“块”这个词) Page.RegisterStartupScript()可以用于任何脚本,即使它不在函数中。

C. Page.RegisterClientScriptBlock()应该用于不需要在页面加载时运行的功能。 Page.RegisterStartupScript()应该用于必须在页面加载时运行的脚本。

D. Page.RegisterClientScriptBlock()应用于不需要创建表单元素的脚本。 Page.RegisterStartupScript()应该用于需要创建表单元素并使用对它们的引用的脚本。

请注意,所有 4 个差异本质上是相互关联的(它们建立在前一个差异的基础上)。放在一行中的差异有时可能太微妙了。

你可以从这里这里了解更多关于这些的信息

于 2013-01-29T08:58:17.607 回答
0

您可以添加一个脚本,该脚本将在页面加载到浏览器时执行:

Page.RegisterStartupScript("unique_key", "<script type=\"text/javascript\">NewPage()</script>"); // but this is deprecated function

或像这样:

ClientScript.RegisterClientScriptBlock(this.GetType(), "unique_key", "NewPage()", true);            

但是,如果您只是想做一个重定向(正如我从您的 NewPage 函数中看到的那样),您可以这样做:

Response.Redirect("http://www.example.com");
于 2013-01-29T09:00:23.130 回答