Элемент управления ASP.NET Treeview не может обрабатывать угловые скобки в данных - PullRequest
1 голос
/ 03 декабря 2010

У меня есть некоторые данные, которые содержат угловые скобки в некоторых полях.

Даже при правильном экранировании как &lt: или > (или даже шестнадцатеричном коде) в Visual Studio 2005 ASP.Net данные поля усекаются в первой угловой скобке. Если я заменю данные фигурными скобками, они будут отображаться нормально.

Пример данных (неэкранированный):

<ITReview><row TopNode="REQ 123456 TT Description <Date sent to app dev> <Priority> <SubTask Status>"/><row TopNode="REQ 456789 TT Description <Date sent to app dev> <Priority> <SubTask Status>"/></ITReview><ITReview><row TopNode="REQ 123456 TT Description <Date sent to app dev> <Priority> <SubTask Status>"/><row TopNode="REQ 456789 TT Description <Date sent to app dev> <Priority> <SubTask Status>"/></ITReview>

Пример данных (экранированный):

<ITReview>
<row TopNode="REQ 123456&#x09;TT Description&#x09;&lt;Date sent to app dev&gt;&#x09;&lt;Priority&gt;&#x09;&lt;SubTask Status&gt;"/>
<row TopNode="REQ 456789&#x09;TT Description&#x09;&lt;Date sent to app dev&gt;&#x09;&lt;Priority&gt;&#x09;&lt;SubTask Status&gt;"/>
</ITReview>

Ничего сложного, привязка TreeView к XMLDataSource с заданным именем файла и указание привязки в виде DataMember = row и TextField = TopNode.

Я ничего не нашел в Интернете, но, конечно, поиск «угловой скобки» просто увеличивает количество результатов, а не уменьшает их.

Кто-нибудь видел что-нибудь подобное? Знаете об обходном пути или решении? ASP.Net v2.0.50727.

Обновление: пример CDATA, который я использовал, как предложено. Не сработало.

<ITReview> <TopNode> <MainData> <![CDATA[REQ 123456 TT Description <Date sent to app dev> <Priority> <SubTask Status>]]> </MainData> </TopNode> <TopNode> <MainData> <![CDATA[REQ 456789 TT Description <Date sent to app dev> <Priority> <SubTask Status>]]> </MainData> </TopNode> </ITReview>

Ответы [ 3 ]

0 голосов
/ 04 декабря 2010

Можете ли вы изменить исходный XML-код, чтобы вместо данных в атрибуте TopNode = "" у вас было <row><TopNode><![CDATA[long string]]></TopNode></row>?

0 голосов
/ 06 декабря 2010

Если я дважды закодирую угловые скобки, это, похоже, сработает, по крайней мере, как я думаю, вы ищете.Поэтому &amp;lt; вместо <

Я искал причину, по которой я думал, что может быть настройка, которую вы можете изменить.Похоже, что оно исходит из свойства Value класса XmlAttribute, но я не вижу способа его отключить.

0 голосов
/ 03 декабря 2010

Попробуйте записать его в контексте HTMLEncode ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...