RegisterClientScriptBlock と RegisterStartupScript は両方ともスクリプト ブロックを登録します。
ClientScript.RegisterClientScriptBlock(this.GetType(), "script1", "alert(1);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);", true);
両者の違いは、RegisterClientScriptBlock が本文の先頭に登録されるのに対し、RegisterStartupScript は本文の最後に登録されることです。
なぜですか?パフォーマンスの最適化に関する記事の中には、スクリプトを最後にロードする必要があると記載されているものもありますが、アプリケーションによっては、最初にスクリプトをロードする必要があります。この場合は、ClientScript.RegisterStartupScript を使用する必要があります。
2 番目のパラメータ キーについて話しましょう。
2 番目のパラメーターのキーは、重複した登録を避けるために使用されます。上記のコードでは、キーはすべて script1 ですが、メソッド名が異なるため競合は発生しません。
以下のコードはすべて RegisterStartupScript です。script1 スクリプトがすでに登録されているため、2 番目の文には出力がありません。
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(3);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script2", "alert(4);", true);
Response.Write は JavaScript を出力できますが、出力内容は になります。以前は、これによりスタイルシートの失敗や、一部の脆弱なブラウザでエラーが発生するなどの問題が発生していました。
ClientScript は JavaScript を簡単に管理できます。ClientScript.RegisterClientScriptBlock と ClientScript.RegisterStartupScript の違いは 1 つだけです。つまり、RegisterClientScriptBlock は