c# - start - 這個作業系統版本不支援這個選項系統管理員應該改用開啟或關閉windows功能對話方塊伺服器管理員管理工具或dism exe命令列




在IIS中部署時,複選框在TreeView控件的節點上不可見 (3)

還沒有答案需要顯示圖像 ,我嘗試過相同,在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可以看到:

必須有其他東西阻止頁面中的複選框。 顯示更多代碼。

我面臨著關於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_tvExplicitn0CheckBoxctl00_MainContent_tvExplicitn1CheckBox等。 這也是問題的原因。 我注意到的另一件事是為localhost和部署到IIS的服務器中的控件生成的客戶端ID的差異。 下面是渲染的<a> ,它是兩個樹視圖控件的一部分:

  1. IIS: MainContent_tvExplicitt0MainContent_tvExplicitt1這是treeview節點鏈接的ID
  2. LocalHost: ctl00_MainContent_tvExplicitt0ctl00_MainContent_tvExplicitt2

因此問題可能與如何在不同環境中實際呈現控件有關,即我的localhost和IIS服務器。 在localhost中, .Net 3.5 framework存在於IIS服務器.Net 4 。 因此,由於這兩個版本的client ID生成不同,因此可能是這樣。

第三次更新另外,我在localhost中將框架版本更改為.net 4 ,但它沒有重現該問題。它還在web.config中添加了controlRenderingCompatibilityVersion="3.5" 。 然後我將相同的代碼部署到IIS,並且我收到一個錯誤,即controlRenderingCompatibilityVersion不是有效標記。 這是否意味著IIS服務器沒有在.net 4上運行。我自己無法訪問IIS服務器。

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

第五次更新我將相同的構建部署到不同機器上的另一台IIS服務器(這些是我們運行應用程序的舊服務器)。 並且可以看到復選框。 .net框架的版本與面臨問題的版本相同。 要求相關團隊將這些服務器中的相同設置更新為面臨問題的服務器。 它仍然沒有幫助。 因此,在新的服務器上配置網站的方式確實存在問題,其中復選框不可見


如果要測試它是否是控件名稱並且您正在使用代碼創建複選框,則可以將您正在使用的控件的clientid屬性設置為Static,更新管理它的代碼以僅使用控件ID ,然後看看代碼是否有效。


轉到IE \ tools \ Compatibilty視圖設置並按添加以將您的URL添加到列表中,然後再次嘗試加載您的網頁。

希望能幫助到你

問候





treeview