在静态方法内部查看状态

时间:2013-02-19 06:11:38

标签: c# asp.net

我创建了一个用于从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 ...
  }

3 个答案:

答案 0 :(得分:3)

错误是因为ViewSate对象随页面附加。这就是为什么你不能在静态方法中使用它..

而不是这个,你需要将cust_id作为参数传递给方法,所以你的方法就像

  [WebMethod]
  public static void add_plan_items(string plans,string cust_id)
  {
     //your code
  }

答案 1 :(得分: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;
    }
}

答案 2 :(得分:0)

我在这里看到了类似的问题 How could I access the ViewState of the current page using HttpContext?
哪些建议我可以使用httpcontext

访问视图状态
    private static T GetViewState<T>(string name)
    {
        return (T) ((BasePage)HttpContext.Current.CurrentHandler).PageViewState[name];
    }

我添加了一个新的PageViewState属性,让我的所有页面都从我的BasePage继承,以显示ViewState,然后才能获取或设置它。