Asp.net ViewState未在回发期间保留自定义添加
我有一个问题,可能是因为我不理解viewstate的工作方式。我有一些代码在setter中为我创建的自定义控件中的属性设置viewstate变量Asp.net ViewState未在回发期间保留自定义添加,asp.net,c#-4.0,Asp.net,C# 4.0,我有一个问题,可能是因为我不理解viewstate的工作方式。我有一些代码在setter中为我创建的自定义控件中的属性设置viewstate变量 public bool EditMode { get { return (bool)(ViewState["editMode" + this.ID] ?? false); } set {ViewState["editMode" + this.ID] = value;} } 正在按钮单击事件期间设置编
public bool EditMode
{
get { return (bool)(ViewState["editMode" + this.ID] ?? false); }
set {ViewState["editMode" + this.ID] = value;}
}
正在按钮单击事件期间设置编辑模式
public void shippingButton_Click(object sender, EventArgs e)
{
if (((Button)sender).CommandName== "Edit")
{
ctrlShippingAddress.EditMode = true;
}
else
{
Page.Validate();
if (Page.IsValid)
{
ctrlShippingAddress.SaveAddress();
ctrlShippingAddress.EditMode = false;
}
}
}
我曾尝试在页面加载时手动设置它,以防我没有在页面周期的正确点将其添加到viewstate,但据我所知,事件发生在呈现之前。我还尝试将ViewStateMode=“Enabled”添加到控件中,然后添加到使用它的页面,然后添加到母版页,但没有成功
如果我在get/set点进行调试,我会看到viewstate是一个空集合(这没有意义,因为它还保存了应该持久化的表单数据)
非常感谢您的帮助。您不需要将控件ID附加到ViewState键。我想你这样做是为了独一无二,但这不是必要的 上述方法可能会解决您的问题,但如果您不这样做,请尝试以下方法:
public bool EditMode
{
get
{
bool editMode = false;
if (ViewState["editMode"] != null)
editMode = (bool)ViewState["editMode"];
return editMode;
}
set
{
ViewState["editMode"] = value;
}
}
您不需要将控件ID附加到ViewState键。我想你这样做是为了独一无二,但这不是必要的 上述方法可能会解决您的问题,但如果您不这样做,请尝试以下方法:
public bool EditMode
{
get
{
bool editMode = false;
if (ViewState["editMode"] != null)
editMode = (bool)ViewState["editMode"];
return editMode;
}
set
{
ViewState["editMode"] = value;
}
}
与同事一起查看后,我发现问题出在web.config的pages节点上
<pages enableViewState="false">
需要设置为true与同事一起查看后,我发现问题出在web.config的pages节点上
<pages enableViewState="false">
需要设置为true与同事一起查看后,我发现问题出现在web配置的pages节点中。需要设置为true(很明显),您应该将此评论作为答案重新发布,然后接受它,因此如果将来有人发现此问题,他们也会找到一个明确标记的答案。与同事一起查看后,我发现问题出现在web配置的pages节点中,需要设置为true(明确)。您应该将此评论作为答案重新发布,然后接受它,这样,如果将来有人发现此问题,他们也会找到一个明确标记的答案。