我有一个UpdatePanel,在我的updatepanel_Load中,我有一些看起来像这样的代码:
if (!IsPostBack || triggeredRefresh.Value == "1")
{
create hidden fields and add to list using
itemFields.Add(newField);
}
else if ( triggeredCheck.Value == "1" )
{
lookup field values
}
列表在类级别使用: 列出itemFields = new List();
问题是每当我想在隐藏字段中查找值时,列表都是空的。为什么此时它是空的,我该如何解决?
由于
答案 0 :(得分:0)
回发之间不会保留类级别字段。使用会话状态集合来持久化值。对于持久控件,您可以使用<asp:PlaceHolder />
。
编辑:
如果您使用HiddenField
只存储单个值并从服务器端访问,如果没有从客户端脚本访问它,您可以执行类似这样的操作。
删除班级列表。
if (!IsPostBack || triggeredRefresh.Value == "1")
{
Session["someValueKey"] = 0;
}
else if ( triggeredCheck.Value == "1" )
{
var x = Convert.ToInt32(Session["someValueKey"]);
}
如果您确实需要一个值列表,那么您可以
if (!IsPostBack || triggeredRefresh.Value == "1")
{
Session["someValueKey"] = new List<int>{100,200};
}
else if ( triggeredCheck.Value == "1" )
{
var x = Session["someValueKey"] as List<int>();
}
如果您确实需要它作为控件(从客户端脚本访问),您可以
if (!IsPostBack || triggeredRefresh.Value == "1")
{
HiddenField hiddenField = new HiddenField();
hiddenField.ID ="hiddenField1";
hiddenField.Value = "0";
placeHolder1.Controls.Add(hiddenField);
}
else if ( triggeredCheck.Value == "1" )
{
HiddenField hiddenField = placeHolder1.FindControl("hiddenField1") as HiddenField;
var x = Convert.ToInt32(hiddenField.Value);
}