我面临有关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池后也未重置。
第二次更新:localhost中的复选框的客户端ID为ctl00_MainContent_tvExplicitn0CheckBox
,ctl00_MainContent_tvExplicitn1CheckBox
等。这就是问题的原因。
我注意到的另一件事是为localhost和部署到IIS的服务器中的控件生成的客户端ID的差异。
下面是渲染的<a>
,它是两者中树视图控件的一部分:
MainContent_tvExplicitt0
,MainContent_tvExplicitt1
这是树视图节点链接的ID ctl00_MainContent_tvExplicitt0
,ctl00_MainContent_tvExplicitt2
等问题可能与如何在不同环境中实际呈现控件有关,即我的localhost和IIS服务器。
在localhost中,.Net 3.5 framework
位于IIS服务器.Net 4
中。因此,由于client ID
生成在两个版本中都有所不同,所以可能是这样。
第三次更新
另外,我在.net 4
中将框架版本更改为localhost
,但它没有重现该问题。它还在web.config中添加了controlRenderingCompatibilityVersion="3.5"
。然后我将相同的代码部署到IIS,我收到controlRenderingCompatibilityVersion
不是有效标记的错误。是否意味着IIS
服务器未在.net 4
上运行。我自己无法访问IIS服务器。
第4次更新:
应用程序在IIS中配置了.net 4
版本。
第五次更新 我将相同的构建部署到不同机器上的另一个IIS服务器(这些是我们运行应用程序的旧服务器)。并且可以看到复选框。 .net框架的版本与面临问题的版本相同。 要求相关团队将这些服务器中的相同设置更新为面临问题的服务器。它仍然没有帮助。因此,在新的服务器上配置网站的方式确实存在问题
答案 0 :(得分:8)
还没有答案,需要显示图片,我尝试过相同的,在aspx中使用此代码:(我没有更改IIS中的任何设置,在aspx中也没有任何内容,创建了一个简单的解决方案&gt;&gt;添加了树视图并进行了部署。)
<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中部署,可以看到:
必须有其他内容阻止页面中的复选框。显示更多代码。
答案 1 :(得分:5)
有时为不同版本的IE配置IIS而不是本地版本,这可能会导致一些兼容性问题。
我总是将以下内容添加到我的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
答案 2 :(得分:0)
如果您想测试它是否是控件名称并且您正在使用代码创建复选框,您可以将您正在使用的控件的clientid属性设置为Static,更新管理它的代码以便使用控件ID,然后查看代码是否有效。
答案 3 :(得分:-1)
转到IE \ tools \ Compatibilty视图设置并按添加以将您的网址添加到列表中,然后再次尝试加载您的网页。
希望有所帮助
此致