如何根据属性值缓存单独的用户控件实例

时间:2009-10-10 04:09:03

标签: asp.net caching user-controls

我有一个名为UC_Test的asp.net用户控件,它有一个名为param1的公共属性。它存放在aspx页面A和B中。

在页面A上,param1设置为10,在页面B上param1设置为20。 根据参数值,控制用户控件的格式。

我希望页面A和页面B缓存分隔用户控件的实例。

正如okw指出的那样,我想出于性能原因使用缓存而不是持久化值。请告诉我如何实现这一点。

我可以为此目的使用Shared = false吗?例如?

感谢阅读。

3 个答案:

答案 0 :(得分:1)

这听起来像是VaryByCustom输出缓存指令的理想候选者。您可以使用属性的值来确定缓存版本之间的差异。

有关详细信息,请参阅MSDN:http://msdn.microsoft.com/en-us/library/ms550239.aspx

答案 1 :(得分:0)

最直接的方法是使用保存适当值的HiddenField。在表单提交或回拨呼叫期间从页面读回来。

答案 2 :(得分:0)

您可以执行以下操作:

public int MyProperty
{
    get
    {
        return (int)ViewState[this.UniqueID + "_MyProperty"];
    }

    set
    {
        ViewState[this.UniqueID + "_MyProperty"] = value;
    }
}

此场景中的ViewState可与HttpContext.Current.Cache或HttpContext.Current.Session互换。您只需要确保检查空值或其他任何内容。

希望它有所帮助。