如何从内容页向Master.cs中的函数发送参数

本文关键字:函数 参数 cs Master | 更新日期: 2023-09-27 17:50:52

In Master.cs:

public string sortOrder
{
    get
    {
        if (ViewState["sortOrder"].ToString() == "Desc")
        {
            ViewState["sortOrder"] = "Asc";
        }
        else
        {
            ViewState["sortOrder"] = "Desc";
        }
        return ViewState["sortOrder"].ToString();
    }
    set
    {
        ViewState["sortOrder"] = value;
    }
}

我从内容页调用它:

ViewState["sortOrder"] = "Asc";
PD (e.SortExpression, Master.sortOrder, false);

在执行函数时,我在

这一行得到以下错误

if (ViewState["sortOrder"].ToString() == "Desc"):对象引用未设置为对象的实例。

sortOrder函数也在内容页中时,它工作得很好。我正试图将所有可重用的代码移动到Master.cs文件。

如何修改函数,使其工作,因为它是在内容页

如何从内容页向Master.cs中的函数发送参数

母版页和内容页的ViewState不一样。在内容页上,您只修改了内容页的ViewState,因此母版页得到的是空引用。

要在母版页和内容页之间持久化数据,您有几个选项:

  • 如果数据需要在回发中持久化,那么要么使用Session,要么通过((MasterType)Page.Master).sortOrder
  • 后面的内容代码上引用主服务器的ViewState。
  • 否则,可以使用Context.Items对象。

尝试使用这个

public string sortOrder
{
      get
      {
           if (!string.IsNullOrEmpty(Convert.ToString(ViewState["sortOrder"])) && Convert.ToString(ViewState["sortOrder"]) == "Desc")
           {
                ViewState["sortOrder"] = "Asc";
           }
           else
           {
                ViewState["sortOrder"] = "Desc";
           }
           return Convert.ToString(ViewState["sortOrder"]);
      }
      set
      {
           ViewState["sortOrder"] = value;
      }
}