0

我有一个问题,我找不到合适的术语来进行合理的搜索并解决问题。

让我们看看,当我创建一个页面时,在某些时候我需要创建一个 WebUserControl 并在 html 标记内延迟类似 state = "true" 的内容(如标签的文本),以便页面加载后,随后是否在代码中编辑该控件。

<MyControls:Teste Id="aaa" runat="server" state="false"/>

测试控件代码如下:(这个控件的html页面是空白的,只有header)

public partial class WebUserControls_WUC_Tect : System.Web.UI.UserControl
{
    private static bool state ;
    public bool State 
    {
        get { return state ; }
        set { state = value; }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

问题:

每当页面返回服务器并重新加载时,状态变量总是根据我传递的初始状态设置为 false 或 true,我的意图是让这个变量在页面开始时只加载一次,然后可以只能由代码隐藏更改。

我很感激你的建议。

问候帕特里克·维加

4

1 回答 1

0

您需要使用 ViewState 来存储属性值以保存持久值。

public partial class WebUserControls_WUC_Tect : System.Web.UI.UserControl
{
    private static bool state ;
    public bool State 
    {
        get
        {
        if (ViewState["MyState"] == null)
        {
            ViewState["MyState"] = false;
        }
        return (bool)ViewState["MyState"];
        }
        set
        {
        ViewState["MyState"] = value;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}
于 2016-11-14T15:13:54.560 回答