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>

Webフォームを使用しているので、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

したがって、2つの違いを以下に説明します。

次のフォームタグが付いた.aspxページがあるとします:(行番号は参照用です)

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

次に、各メソッドの主な違いを見てみましょう。

A.2 行目の前にスクリプト Page.RegisterClientScriptBlock()ブロックPage.RegisterStartupScript()を挿入します。4行目の後にスクリプトを挿入します。

B. Page.RegisterClientScriptBlock()通常、関数にカプセル化されたスクリプトに使用する必要があります。(したがって、「ブロック」という単語) Page.RegisterStartupScript()は、関数内にない場合でも、任意のスクリプトに使用できます。

C. Page.RegisterClientScriptBlock()は、ページの読み込み時に実行する必要のない関数に使用する必要があります。 Page.RegisterStartupScript()ページロードで実行する必要があるスクリプトに使用する必要があります。

D. Page.RegisterClientScriptBlock()フォーム要素を作成する必要のないスクリプトに使用する必要があります。 Page.RegisterStartupScript()フォーム要素が作成されている必要があり、それらへの参照を使用するスクリプトに使用する必要があります。

4つの違いはすべて本質的に相互に関連していることに注意してください(前の1つに基づいています)。1行に入れられた違いは、微妙すぎる場合があります。

あなたはここここからこれらについてもっと知ることができます

于 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 に答える