C# asp.net page.items中的空值

C# asp.net page.items中的空值,c#,asp.net,C#,Asp.net,我有一个asp.net页面,后面有C#代码。 我在主页中添加了一个页面项。然后我使用了一些web用户控件。 在其中一种情况下,当我在页面加载中使用此项时。它有正确的值,但当我在同一web控件的另一个私有函数中使用它时,它有空值! 然后我更喜欢使用公共字符串并在其中设置该项的值。但也不起作用 public string ReqID0; string Status0 { get; set; } string Status = ""; string ConnectionString = Config

我有一个asp.net页面,后面有C#代码。 我在主页中添加了一个页面项。然后我使用了一些web用户控件。 在其中一种情况下,当我在页面加载中使用此项时。它有正确的值,但当我在同一web控件的另一个私有函数中使用它时,它有空值! 然后我更喜欢使用公共字符串并在其中设置该项的值。但也不起作用

public string ReqID0;
string Status0 { get; set; }
string Status = "";

string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection sqlc4;
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        ReqID0 = Page.Items["ReqID"].ToString();
        ReqIDLbl.Text = ReqID0;
...
第二个功能(方法)是:


Page.Item在每次回发邮件时都会刷新,您必须在每次刷新页面时添加它,并按照
Page\u Load
事件中的代码添加

 if (!this.IsPostBack)
    {
        ReqID0 = Page.Items["ReqID"].ToString();
        ReqIDLbl.Text = ReqID0;
--当您的页面进行回发并且在
Change\u Status
方法中获得空值时,值的赋值被忽略。尝试改用
Viewstate

使用Items属性存储与页面请求具有相同生存期的对象

更新:尝试使用
ViewState

if (!this.IsPostBack)
    {
      ViewState["ReqID"]= ReqIDLbl.Text;
        //ReqID0 = Page.Items["ReqID"].ToString();
       //ReqIDLbl.Text = ReqID0;



private void Change_Status(string newStatus)
    {

        //ReqID0=ViewState["ReqID"].ToString();

全局变量是在asp.net中的回发之间创建/初始化的,它们不会保留回发之间的值,因为http是无状态协议,因此需要使用ViewState

public string ReqID0;
string Status0 { get; set; }
string Status = "";

string ConnectionString =    ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

SqlConnection sqlc4;

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
    ReqIDLbl.Text = ReqID0;
    ReqID0 = ViewState["ReqID0"].ToString();//ViewState
  /*In case if the above code doesn't work use 
   ReqIDLbl.Text =  ViewState["ReqID0"].ToString();*/
  ------
 }
//第二功能

   private void Change_Status(string newStatus)
{

    ReqID0=ViewState["ReqID0"].ToString();

    sqlc4 = new SqlConnection(ConnectionString);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "UPDATE Request SET Status=@newStatus WHERE ID=@ReqID";
    cmd.Parameters.AddWithValue("@newStatus", newStatus);
    cmd.Parameters.AddWithValue("@ReqID", ReqID0);


    cmd.Connection = sqlc4;
    sqlc4.Open();
    cmd.ExecuteNonQuery();
    sqlc4.Close();       
  }

希望这可能会给您答案

对象引用未设置为对象的实例。@user3051479没有得到您想要告诉的内容,请详细说明。不工作!错误:ViewState[“ReqID0”].ToString()//对象
   private void Change_Status(string newStatus)
{

    ReqID0=ViewState["ReqID0"].ToString();

    sqlc4 = new SqlConnection(ConnectionString);
    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "UPDATE Request SET Status=@newStatus WHERE ID=@ReqID";
    cmd.Parameters.AddWithValue("@newStatus", newStatus);
    cmd.Parameters.AddWithValue("@ReqID", ReqID0);


    cmd.Connection = sqlc4;
    sqlc4.Open();
    cmd.ExecuteNonQuery();
    sqlc4.Close();       
  }