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