gpt4 book ai didi

asp.net - 通过 clientID 改变用户控件上的输出缓存

转载 作者:行者123 更新时间:2023-12-04 06:12:06 24 4
gpt4 key购买 nike

我有一个用户控件,我想对其使用输出缓存,但它多次使用不同的数据。

我想过使用 VaryByCustom 并尝试接收控件的 ClientID,但一直无法找到方法。

有没有办法根据 ClientID 输出缓存用户控件,或者通过它在 DOM 中的位置来识别它的另一种方法?

更新:
我试图添加一个隐藏字段并设置输出缓存。例如,我将隐藏字段的值设置为 Datetime.Now,但它仍然显示相同的用户控件,而不是两个内容不同的用户控件。

<%@ OutputCache VaryByControl="hidMyField" Duration="120" %>
<asp:HiddenField runat="server" ID="hidMyField" Value="<%= Datetime.Now.ToString() %>"/>

最佳答案

一种方法可能是在控件上设置一个服务器端隐藏字段,将用户控件的客户端 ID 插入其中,然后使用 VaryByControl带有隐藏字段 ID 的参数。

有关更多信息/选项,请参阅 this MSDN link讨论同样的问题。

编辑
使用 Datetime.Now.ToString()不是一个好主意有两个原因!如果您查看各种控件的实际值,您会发现它是相同的,因为 ToString将具有高达秒的值 - 页面上的所有控件实例将具有几乎相同的日期/时间值,可能以毫秒为单位不同,这将给出相同的 ToString()值(value)。
第二个问题是DateTime.Now是不确定的。为了缓存工作,您需要具有确定性值(在重复调用中不会更改的值) - 否则对于每个页面请求,您将拥有不同的值,这将使缓存无效。我建议将用户控件的客户端 ID 作为一个值。另一种方法是在用户控件中公开一个属性,并将其设置为页面中的运行编号,例如 1,2,3..。

关于asp.net - 通过 clientID 改变用户控件上的输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7657412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com