c# - 在 IIS 中部署时,复选框在 TreeView 控件的节点上不可见

标签 c# asp.net iis iis-7 treeview

我面临关于 TreeView 的问题控制。我为 TreeView 的节点启用了复选框控制。它工作正常并且显示正常。但是当我将其部署到 IIS 时,复选框在那里不可见。它根本没有渲染。 下面是TreeView :

<asp:TreeView id="tvExplicit"
        EnableClientScript="true"
        PopulateNodesFromClient="true"  
        ExpandDepth="0" 
        ShowLines="true" 
        ShowExpandCollapse="true"
        ShowCheckBoxes="Root"
        OnTreeNodePopulate="tvExplicit_TreeNodePopulate"
        Width="1px"
        runat="server">

    <Nodes>
    </Nodes>

  </asp:TreeView> 

这段代码在我的本地机器上运行良好。但在 IIS 上部署时不会。除了显示根节点的复选框外,一切正常。

注意:复选框根本不会呈现为 HTML。所以它不是 CSS 根据我阻止它

更新:我发现以前版本的页面缓存在 IIS 中,即使在重置 APP 池后也不会重置。

第二次更新:本地主机中复选框的客户端 ID 为 ctl00_MainContent_tvExplicitn0CheckBox , ctl00_MainContent_tvExplicitn1CheckBox ,ETC。这可能是问题的原因。 我注意到的另一件事是为本地主机和部署到 IIS 的服务器中的控件生成的客户端 ID 的差异。 下面是呈现的 <a>这是 TreeView 控件的一部分:

  1. IIS:MainContent_tvExplicitt0 , MainContent_tvExplicitt1这是 TreeView 节点链接的 ID
  2. 本地主机:ctl00_MainContent_tvExplicitt0 , ctl00_MainContent_tvExplicitt2

那么这个问题是否与控件在不同环境(即我的本地主机和 IIS 服务器)中实际呈现的方式有关。 在本地主机中,.Net 3.5 framework在 IIS 服务器中 .Net 4 .那么会不会是因为这个client ID两个版本的生成不同。

第三次更新 另外,我将框架版本更改为 .net 4localhost , 但它没有重现问题。它也确实添加了 controlRenderingCompatibilityVersion="3.5"在 web.config 中。然后我将相同的代码部署到 IIS,我得到一个错误 controlRenderingCompatibilityVersion不是有效标签。是不是表示IIS服务器未在 .net 4 上运行.我自己无权访问 IIS 服务器。

第四次更新: 应用程序配置为 .net 4 IIS 中的版本。

第五次更新 我将相同的构建部署到不同机器上的另一个 IIS 服务器(这些是我们运行应用程序的旧服务器)。并且复选框是可见的。 .net 框架的版本与面临问题的版本相同。 要求相关团队将与这些服务器中相同的设置更新到面临问题的服务器。仍然没有帮助。因此,在复选框不可见的新服务器上如何配置网站似乎确实存在问题

最佳答案

还没有答案需要显示图像,好吧,我也试过了,在 aspx 中使用了这段代码:(我没有更改 IIS 中的任何设置, aspx 中也没有任何内容,创建了一个简单的解决方案 >> 添加了 TreeView 并进行了部署。)

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <div> 
        <asp:TreeView ID="TreeTest"
            EnableClientScript="true"
            PopulateNodesFromClient="true"
            ExpandDepth="0"
            ShowLines="true"
            ShowExpandCollapse="true"
            ShowCheckBoxes="Root"
            OnTreeNodePopulate="TreeTest_TreeNodePopulate"
            Width="1px"
            runat="server"> 
            <Nodes>
                <asp:TreeNode Text="Something">
                    <asp:TreeNode Text="11"></asp:TreeNode>
                </asp:TreeNode>
                <asp:TreeNode Text="Something">
                     <asp:TreeNode Text="11"></asp:TreeNode>
                </asp:TreeNode>
                <asp:TreeNode Text="Something"></asp:TreeNode>
            </Nodes> 
        </asp:TreeView>  
    </div>
</asp:Content>

在我本地查看可以看到这个: enter image description here

部署在IIS version 6.2,windows server 2012,可以看到这个: enter image description here

一定有其他东西阻止了您页面中的复选框。显示更多代码。

关于c# - 在 IIS 中部署时,复选框在 TreeView 控件的节点上不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41828174/

相关文章:

c# - 如何删除 StringBuilder 中的 X 和 Y 行?

asp.net - 如何获取正在使用我的网络服务的网站的 URL?

asp.net - 从主 Web 应用程序自动登录到另一个 ASP.NET 应用程序

asp.net - App_Code 以 32 位模式编译并放置在 Framework64 temp 中

c# - 无法以编程方式覆盖 IIS 虚拟目录/应用程序中的文件(文件始终被锁定)

c# - .net 框架与 scrapy python

c# - 当轮廓可以撕裂时,如何检测简单形状(使用emgu cv)?

c# - 如何在保持控件可见的同时向 c# 表单添加透明度?

c# - 处理长时间运行的报告

iis - 将parameters.xml 或setParams.xml 替换为Azure DevOps Release Pipeline 变量