【问题标题】:Checkbox not visible on nodes of TreeView control when deployed in IIS在 IIS 中部署时,TreeView 控件节点上的复选框不可见
【发布时间】:2017-01-24 12:22:51
【问题描述】:

我遇到了关于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_tvExplicitn0CheckBoxctl00_MainContent_tvExplicitn1CheckBox 等。那么这可能是问题的原因。 我注意到的另一件事是为 localhost 和部署到 IIS 的服务器中的控件生成的客户端 ID 不同。 下面是渲染的&lt;a&gt;,它是两者中树视图控件的一部分:

  1. IIS:MainContent_tvExplicitt0,MainContent_tvExplicitt1 这是树视图节点链接的 ID
  2. Lo​​calHost:ctl00_MainContent_tvExplicitt0,ctl00_MainContent_tvExplicitt2

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

第三次更新 另外,我在localhost 中将框架版本更改为.net 4,但它没有重现问题。它还在web.config 中添加了controlRenderingCompatibilityVersion="3.5"。然后我将相同的代码部署到 IIS,我得到一个错误,controlRenderingCompatibilityVersion is not a valid tag。这是否意味着IIS 服务器没有在.net 4 上运行。我自己无权访问 IIS 服务器。

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

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

【问题讨论】:

  • 听起来像是 IIS mime 类型问题或类似问题,您是否打开了 Fiddler 或其他类型的请求监视器?您是否收到任何 404 用于 Javascript、图像或其他内容?
  • 复选框是否存在于 HTML 中?如果是这样,那么我猜是有一个 CSS 类干扰。
  • 不,复选框不会呈现为 HTML。 @VDWWD
  • 你能说出你在使用哪个 .net 框架吗?
  • TreeTest_TreeNodePopulate 事件/方法中有什么内容?

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


【解决方案1】:

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

<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>

在我的本地检查可以看到:

部署在 IIS 6.2 版、windows server 2012 中,可以看到:

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

【讨论】:

  • 问题是以前版本的代码没有从缓存中重置。应用程序池已重置,仍然。 @萨克
  • @ubaidashraf 那么你的问题还在吗?
  • 是的,问题仍然存在@Sak
  • @ubaidashraf 显示更多代码,否则我们只能这样做了。
  • 需要看populate treenode方法。例如,如果这是一个数据库查询,我会说没有数据返回并且节点没有被填充。如果 IIS Web 服务器无法访问 SQL 服务器或被防火墙等阻止,您也将无法获取数据。如果您将复选框数据绑定到其未接收的特定值,则支票簿可能会被渲染。
【解决方案2】:

有时 IIS 配置的 IE 版本与您的本地版本不同,这可能会导致一些兼容性问题。

我总是在我的 html 文件中的 head 元素中添加以下内容:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

这里有更多信息:

https://msdn.microsoft.com/en-us/library/jj676913(v=vs.85).aspx

【讨论】:

  • 已经在另一个页面中有树视图,我没有遇到这个问题。仅在部署到 IIS 后才特定于该页面。在这两个页面上,html 和服务器代码是相同的
  • 嗨@ubaidashraf,这是同一网站上的其他页面吗?如果没有,您是否有权访问 IIS 服务器来检查网站正在运行哪些应用程序池?它们可能有不同的 .NET CLR 版本。
  • 嗨@ubaidashraf,如果您认为这是一个缓存问题,那么这篇文章可能会有所帮助:iis.net/learn/manage/managing-performance-settings/…
  • 同一网站上具有相同树视图控件的其他页面没有遇到问题。
  • 问题是,我们自己不部署在 IIS 上,而是让第三方使用他们的工具为我们做,因为我们不允许这样做。
【解决方案3】:

如果您想测试它是否是控件名称并且您正在使用代码来创建复选框,您可以将您正在使用的控件的 clientid 属性设置为静态,更新管理它的代码以仅使用控件id,然后看看代码是否有效。

【讨论】:

    【解决方案4】:

    转到您的 IE\tools\Compatibilty 视图设置并按添加以将您的 URL 添加到列表中,然后再次尝试加载您的网页。

    希望对你有帮助

    问候

    【讨论】:

    • 不,没有帮助
    猜你喜欢
    • 2012-06-19
    • 1970-01-01
    • 2017-07-04
    • 2023-04-10
    • 2011-07-30
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多