Флажок не отображается на узлах элемента управления TreeView при развертывании в IIS
Я столкнулся с проблемой в отношении элемента управления 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 и не является reset даже после того, как пул APP был reset.
2-е обновление: идентификатор клиента флажков в localhost равен ctl00_MainContent_tvExplicitn0CheckBox
, ctl00_MainContent_tvExplicitn1CheckBox
и т.д. Так может быть и причина этого вопроса.
Еще одна вещь, которую я заметил, - это различие в идентификаторе клиента, сгенерированном для элементов управления в localhost и на сервере, развернутом в IIS.
Ниже представлен отображаемый <a>
, который является частью управления TreeView в обоих:
- IIS:
MainContent_tvExplicitt0
, MainContent_tvExplicitt1
это идентификатор дерева node link
- LocalHost:
ctl00_MainContent_tvExplicitt0
, ctl00_MainContent_tvExplicitt2
и т.д.
Таким образом, проблема может быть связана с тем, как средства управления фактически отображаются в разных средах, например, на моем сервере localhost и IIS.
В localhost .Net 3.5 framework
есть и на сервере IIS .Net 4
. Так может быть из-за этого, поскольку генерация client ID
в обеих версиях различна.
3-е обновление
Кроме того, я изменил версию рамки на .Net 4
в localhost
, но не воспроизвел проблему. Он также добавил controlRenderingCompatibilityVersion="3.5"
в web.config. Затем я развернул тот же код в IIS, и я получил сообщение об ошибке, что controlRenderingCompatibilityVersion
не является допустимым тегом. Означает ли это, что сервер IIS
не работает на .Net 4
. У меня нет доступа к серверу IIS.
4-е обновление:
Приложение настроено с версией .Net 4
в IIS.
5-е обновление
Я развернул такую же сборку на других серверах IIS на разных машинах (это были наши старые серверы, на которых выполнялось наше приложение). И на нем видны флажки. Версия .net-структуры такая же, как и в случае с проблемами.
Попросил соответствующую команду обновить те же настройки, что и на этих серверах, на серверы, на которых стоит проблема. Тем не менее это не помогло. Таким образом, похоже, что проблема связана с тем, как веб-сайт настроен на новых серверах, где флажки не отображаются.
Ответы
Ответ 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 2012, можно увидеть следующее:
![введите описание изображения здесь]()
Должно быть что-то еще, что мешает флажкам на вашей странице. Показать больше кода.
Ответ 2
Иногда IIS настроен для другой версии IE, чем ваша локальная версия, это может вызвать некоторые проблемы совместимости.
Я всегда добавляю следующее в свой элемент head в мои html файлы:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
Здесь больше информации:
https://msdn.microsoft.com/en-us/library/jj676913(v=vs.85).aspx
Ответ 3
Если вы хотите проверить, является ли это имя элемента управления, и вы используете код для создания флажков, вы можете установить свойство clientid для элементов управления, с которыми вы работаете, в Static, обновить код, который управляет им, чтобы использовать только идентификатор управления, а затем посмотреть, работает ли код.
Ответ 4
Перейдите в окно просмотра IE\tools\Compatibilty и нажмите "Добавить", чтобы добавить URL-адрес в список, а затем снова загрузите свою веб-страницу.
Надеюсь, что это поможет
Привет