C# 正在viewstate中存储的动态文本

C# 正在viewstate中存储的动态文本,c#,asp.net,html,viewstate,C#,Asp.net,Html,Viewstate,我的asp.net应用程序有一个函数,该函数通过从数据库获取导航菜单来为用户返回HTML 目前,我在会话开始时将文本存储在会话变量中,然后使用它在on_load方法上设置导航div的innerHtml 问题是页面现在包含 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPD.. 该div被声明为 <div id="navMenuDiv" class="navMenuDiv" runat="serv

我的asp.net应用程序有一个函数,该函数通过从数据库获取导航菜单来为用户返回HTML

目前,我在会话开始时将文本存储在会话变量中,然后使用它在on_load方法上设置导航div的innerHtml

问题是页面现在包含

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPD..
该div被声明为

<div id="navMenuDiv" class="navMenuDiv" runat="server"></div>

我会缓存从数据库调用返回的数据,然后为每个页面生成导航html,因为db调用是您不希望反复执行的部分

要缓存数据,我会这样做(没有尝试过):

不过,在回答您的问题时,在不粗鲁的情况下,您确定您将其置于会话而不是ViewState中吗

编辑:因为您已将该div转换为服务器控件,所以它将其值存储在ViewState中

关闭navMenuDiv的视图状态:

navMenuDiv.EnableViewState = false;

在div中使用EnableViewState=“false”:

<div id="navMenuDiv" class="navMenuDiv" runat="server" EnableViewState=”false”></div>


是的。这是我的会话开始代码中的内容。会话[“menuHTML”]=(新建NavMenu().GetMenuHTML())以及如何“缓存数据”?对于使用应用程序的每个用户,缓存是否会有所不同?因为生成的菜单是基于userAh的特权级别的,不。在这种情况下,数据需要进入会话,这将使我们巧妙地回到您的原始问题。编辑以显示代码。它是一个递归函数。递归调用在menuCode.appendFormat区域中进行
navMenuDiv.EnableViewState = false;
<div id="navMenuDiv" class="navMenuDiv" runat="server" EnableViewState=”false”></div>