【发布时间】: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_tvExplicitn0CheckBox、ctl00_MainContent_tvExplicitn1CheckBox 等。那么这可能是问题的原因。
我注意到的另一件事是为 localhost 和部署到 IIS 的服务器中的控件生成的客户端 ID 不同。
下面是渲染的<a>,它是两者中树视图控件的一部分:
- IIS:
MainContent_tvExplicitt0,MainContent_tvExplicitt1这是树视图节点链接的 ID - LocalHost:
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