在页面生命周期中使用Control执行一次最多的操作

时间:2016-06-22 18:19:15

标签: asp.net vb.net webforms

我在Web表单项目中实现了颜色选择器控件,并希望确保CSS / JS最多加载一次。我尝试过以下方法:

Protected Shared _clientNeeded As Boolean = True
Public Sub NeedClient()

    If (_clientNeeded) Then
        _clientNeeded = False
    Else
        Return
    End If
    'Loading the client-side
End Sub

问题是,在构建之后,_clientNeeded一开始就是真的,但后来变为假,永远是假的,所以共享,因为我的尝试没有实现我的目标。那么,如果有颜色选择器,但是不能超过一次,我怎么能确保加载客户端呢。

1 个答案:

答案 0 :(得分:1)

您可以使用Context.Items和ViewState的组合来实现该属性。当页面加载多个控件时,ClientNeeded的值可以通过页面的Context.Items在它们之间共享。设置属性后,每个控件都可以将其存储在自己的ViewState中,这样只要页面处于活动状态,它就会被维护:

protected bool ClientNeeded
{
    get
    {
        object value = ViewState["ClientNeeded"];

        if (value != null)
        {
            return (bool)value;
        }
        else
        {
            value = Context.Items["ClientNeeded"];
            if (value != null)
            {
                ViewState["ClientNeeded"] = value;
                return (bool)value;
            }
            else
            {
                return true;
            }
        }
    }

    set
    {
        Context.Items["ClientNeeded"] = value;
        ViewState["ClientNeeded"] = value;
    }
}