Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ViewState未在回发期间保留自定义添加_Asp.net_C# 4.0 - Fatal编程技术网

Asp.net 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;} } 正在按钮单击事件期间设置编

我有一个问题,可能是因为我不理解viewstate的工作方式。我有一些代码在setter中为我创建的自定义控件中的属性设置viewstate变量

 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(明确)。您应该将此评论作为答案重新发布,然后接受它,这样,如果将来有人发现此问题,他们也会找到一个明确标记的答案。