2

Java スクリプトから関数を呼び出すための Web メソッドを作成します。私の aspx コード ビハインドにはビュー ステート ["cust_id"] があります。この cust_id をパブリック静的メソッドで使用したいのですが、これはできません。これを行うのを手伝ってください。

  [WebMethod]
  public static void add_plan_items(string plans)
  {
    string cust_id = Convert.ToString(ViewState["cust_id"]);//Error : object reference is required for non-static ...
  }
4

3 に答える 3

3

エラーは、ViewSateオブジェクトがページに添付されているためです。そのため、静的メソッドでは使用できません..

これの代わりに、メソッドにパラメーターとして渡す必要があるcust_idため、メソッドは次のようになります

  [WebMethod]
  public static void add_plan_items(string plans,string cust_id)
  {
     //your code
  }
于 2013-02-19T06:14:09.430 に答える
2

ビュー ステートの代わりに、Web サービスでセッションを使用できます。
Webメソッドでセッションtrueを有効にするだけです

[WebMethod(EnableSession = true)]
public static Boolean AddRecord(string contextKey)
{
    List<MID1> MID1s = HttpContext.Current.Session["MID1s"] as List<MID1>;

    using (var ctx = new Entities())
    {
        Boolean RetVal = false;
        MID1s = new List<MID1>();
        MID1 objMID1 = new MID1();
        objMID1.ItemID = 1;
        MID1s.Add(objMID1);
        HttpContext.Current.Session["MID1s"] = MID1s;
        return RetVal;
    }
}
于 2014-10-16T06:50:17.050 に答える
0

ここで同様の質問を見ました
HttpContext を使用して現在のページの ViewState にアクセスするにはどうすればよいですか?
を使用してビューステートにアクセスできることを示唆していますhttpcontext

    private static T GetViewState<T>(string name)
    {
        return (T) ((BasePage)HttpContext.Current.CurrentHandler).PageViewState[name];
    }

新しい PageViewState プロパティを追加し、すべてのページが BasePage から継承して ViewState を公開し、それを取得または設定できるようにしました。

于 2013-02-19T06:21:38.230 に答える