我在web.config文件中设置“cacheHtml = true”并设置sublayout(ascx文件)缓存设置。 每当我重新刷新页面时,我都会看到管理页面中增加的“从缓存”计数。但是,子布局(.ascx)不会在页面上获取其所有模板字段值。
假设在其模板字段中有CSS类名称,例如“nav-list”,HTML结果应该如下所示。
<div class="nav-list">
something
</div>
但是,如果我检查“可缓存”,它会显示如下。否则,它显示正确的样式。
<div class=" ">
something
</div>
我查了一下:
已检查 - 可缓存
检查 - 数据变化
检查 - 通过参数变化
检查 - 通过查询字符串变化
问题是什么?
===================更新====================
这是我 DID NOT 检查“可缓存”时的结果。 (正确布局)
<div id="cloud-header">
<div class="navtacular-cover"></div>
<nav class="navtacular navtacular-theme-simple navtacular-variant-dark container block-center">
<h1 class="navtacular-label">
<i class="icon-reorder"></i>
</h1>
<ul class="navtacular-list">
<li id="" class="navtacular-item">
<li id="" class="navtacular-item">
<li id="" class="navtacular-item">
<li id="" class="navtacular-item">
<li id="" class="navtacular-item">
</ul>
</nav>
这是我 DID 检查“可缓存”时的结果。来自数据源的所有类值都是空的。
<div id="cloud-header">
<nav class="">
<h1 class="">
<i class=""></i>
</h1>
<ul class="">
<li id="" class="navtacular-item">
<li id="" class="navtacular-item">
<li id="" class="navtacular-item">
<li id="" class="navtacular-item">
<li id="" class="navtacular-item">
</ul>
</nav>
这是显示为空的所有类名的代码。
<asp:View ID="viewNormalMode" runat="server">
<nav class='<% Response.Write(myDataSourceItem.Fields["Nav Bar Class"]); %>'>
<h1 class='<% Response.Write(myDataSourceItem.Fields["Label h1 Class"]); %>'>
<i class='<% Response.Write(myDataSourceItem.Fields["Label i Class"]); %>'></i>
<% Response.Write(myDataSourceItem.Fields["Nav Bar Label"]); %></h1>
<ul class='<% Response.Write(myDataSourceItem.Fields["ul Class"]); %>'>
<asp:Literal ID="linkObjects" runat="server"></asp:Literal>
</ul>
</nav>
</asp:View>
类名来自另一个具有不同模板字段的项,名为NavBarLinkItem。 在NavBarLinkItem模板中,有字段( url,li Class,class,li Id等... )。
同样,原始的nav子布局使用数据源来获取这些值。