2012-01-14 20 views
3

public staticメソッドで次のClientScript関数(VS2010、C#)を使用しますが、いくつかのエラーが発生します(応答リダイレクトに使用したい"_parent" ターゲットASP.NET public staticメソッドからclientscriptを呼び出す方法

   ClientScript.RegisterStartupScript(GetType(), "Load", "<script type='text/javascript'>window.parent.location.href = '" + a + "'; </script>"); 

Error 37 An object reference is required for the non-static field, method, or property 'System.Web.UI.Page.ClientScript.get' 

Error 38 An object reference is required for the non-static field, method, or property 'object.GetType()'  

おかげ

答えて

6

あなたは、インスタンスのプロパティを使用することはできません(ClientScript)またはstatic methods(基本的に何でもインスタンス)内のメソッド(GetType())。

ドロップstaticキーワードと、それが動作するはずです:

public void SomeMethod() 
{ 
    ClientScript.RegisterSomeScript("Load", 
     "<script>....</script>"); 
} 

EDITコメントの後:

それとも、パラメータとしてページオブジェクトを渡す方法は、静的クラスの静的であることが必要な場合:

public static class ScriptRegistar 
{ 
    public static void RegisterSomeScript(Page page) 
    { 
     page.ClientScript.RegisterStartupScript("Load", 
     "<script>.........</script>"); 
    } 
} 

使用法を(ページの分離コード内):

サイドノート:ClientScript.RegisterStartupScriptは2つの引数をとります: eスクリプト、およびスクリプトテキストが含まれているので、そこにはGetType()の必要はありません。

+0

ご意見ありがとうございますが、どのように私の機能に(ページ)を渡すことができますか?すべてのファイルでグローバルにアクセス可能なパブリック静的クラスでパブリック静的関数を定義するつもりです。したがって、他のファイルからこの関数にページオブジェクトを渡すにはどうすればよいですか? –

+0

この方法で関数を呼び出せますか:._Default.MyUtilityFunctions.LogoutUser(Page);私のパブリック静的クラスはMyUtilityFunctionsであり、Default.aspx.csファイルで定義されているので、エラーは出ませんでした。 –

+1

私は自分の答えを更新しました。 – nemesv

関連する問題