C# 变量';s值未保留在类的方法中
在ASP>Net中使用C#,我声明了一个变量作为类的成员,如下所示:C# 变量';s值未保留在类的方法中,c#,asp.net,C#,Asp.net,在ASP>Net中使用C#,我声明了一个变量作为类的成员,如下所示: public class sales: System.Web.UI.Page { string type=null; } 我在UI中有一个图像按钮,我为它定义了一个名为 protected void ImageButton2_Click(object sender, ImageClickEventArgs e) 在这个方法中,分配给变量“type”(由类的任何其他方法)的任何值都不会被保留,并且只检索值null,尽管我在类
public class sales: System.Web.UI.Page
{
string type=null;
}
我在UI中有一个图像按钮,我为它定义了一个名为
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
在这个方法中,分配给变量“type”(由类的任何其他方法)的任何值都不会被保留,并且只检索值null,尽管我在类中的某个地方为“type”分配了一些值
我无法访问指定值的问题是什么???您必须在回发之间保留数据 我建议您阅读以下文章:
public String Type
{
get { return ViewState["Type"].ToString(); }
set { ViewState["Type"] = value; }
}
这可能是渲染管道的结果。请记住,即使您的事件被触发,页面和所有变量都将使用其默认值重新创建。将其创建为至少具有备份viewstate存储的属性
public String Type
{
get { return ViewState["Type"].ToString(); }
set { ViewState["Type"] = value; }
}
每次对页面执行请求时,变量都会重新初始化(无论是否为回发) 尝试将变量放在属性而不是字段中(正如您正在做的那样),并在第一次加载页面时初始化属性,前提是它不是回发 你应该这样做:
//on the On_Load page's event
if (!IsPostback)
Type = null;
private string Type { get; set; }
每次对页面执行请求时,变量都会重新初始化(无论是否为回发) 尝试将变量放在属性而不是字段中(正如您正在做的那样),并在第一次加载页面时初始化属性,前提是它不是回发 你应该这样做:
//on the On_Load page's event
if (!IsPostback)
Type = null;
private string Type { get; set; }
如果您在对象中指定值,然后使用按钮执行回发,则该值将消失,除非您将该对象实例存储在会话、viewstate或其他内容中
string sType = "something";
Session["YourSessionTagHere"] = sType;
一旦发生回发,您就可以从onclick事件中取出对象并访问值
string sType = (string)(Session["YourSessionTagHere"]);
听起来好像你没有访问同一个对象,而你的对象丢失了,因为每次回发后,你的字符串都是新的
您还可以通过在get and set(获取和设置)中设置一个为您执行会话内容的属性,使其更简洁。如果您在对象中指定值,然后使用按钮进行回发,则该值将消失,除非您将对象的实例存储在会话、viewstate或其他内容中
string sType = "something";
Session["YourSessionTagHere"] = sType;
一旦发生回发,您就可以从onclick事件中取出对象并访问值
string sType = (string)(Session["YourSessionTagHere"]);
听起来好像你没有访问同一个对象,而你的对象丢失了,因为每次回发后,你的字符串都是新的
您还可以通过在get和set中设置一个属性来为您完成会话内容,从而使这一过程更简洁