#c# #asp.net #xml #xslt #textarea
#c# #asp.net #xml #xslt #текстовая область
Вопрос:
Примечание: Это asp.net страница, но преобразование XSLT происходит на стороне клиента. Итак, я пытаюсь установить значение по умолчанию в asp.net текстовая область и она экранируется, что вызывает у меня проблемы
Вот asp.net текстовая область
<asp:TextBox id="Description" TextMode="MultiLine"
Columns="50" Rows="4" runat="server"
ClientIDMode="Static" CausesValidation="false">
<xsl:value-of select="/oohru/form/desc" />
</asp:TextBox>
На странице это становится
<textarea id="Description" cols="50" rows="4"
name="ctl00$RightColumn$Description">
amp;lt;xsl:value-of select="/oohru/form/desc" /amp;gt;
</textarea>
Ввод в текстовую область буквально
<xsl:value-of select="/oohru/form/desc" />
Я хотел бы получить там неэкранированное значение …. если я просто использую обычную текстовую область, например
<textarea rows="5" cols="5">
<xsl:value-of select="/oohru/form/desc" />
</textarea>
Работает нормально…. Как я могу добиться этого с помощью ASP.NET управление? Это в основном нарушает мой клиентский xslt, но ТОЛЬКО в текстовой области…
Спасибо!
Примечание: Я также пытался использовать text =»{/ oohru/form / desc}» внутри текстовой области … то же самое, текстовая область содержала именно это значение oohru / form / desc, а не указанное значение.
Комментарии:
1. Решение оказалось
<textarea rows="4" cols="50" id="Description" runat="server"> <xsl:value-of select="/oohru/form/desc" /> </textarea>
внутри файла cs, когда мне нужно ссылаться на значение,Description.InnerText
надеюсь, что это поможет кому-либо в будущем с подобной проблемой!
Ответ №1:
Похоже, вы пытаетесь использовать XSLT слишком поздно.
Я предполагаю, что вы хотите сгенерировать элемент управления с помощью XSLT.
В этом случае внутри вашего преобразования XSLT у вас будет:
<asp:TextBox id="Description" TextMode="MultiLine"
Columns="50" Rows="4" runat="server"
ClientIDMode="Static" CausesValidation="false">
<xsl:value-of select="/oohru/form/desc" />
</asp:TextBox>
где вам также нужно будет привязать префикс asp:
к некоторому пространству имен.
Альтернативно, в рамках преобразования XSLT вы можете сгенерировать textarea
непосредственно:
<textarea rows="5" cols="5">
<xsl:value-of select="/oohru/form/desc" />
</textarea>
Заключительное замечание: Если мои предположения неверны, и вы просто хотите, чтобы конечный пользователь увидел в textarea
строке "<xsl:value-of select="/oohru/form/desc" />"
, то не имеет значения, что вы видите его (до отображения браузером) экранированным — когда браузер отобразит его, пользователь увидит текст без экранирования.
Обновление: @Jordan дополнительно уточнил, что его преобразование выполняется на стороне клиента — намного позже, чем элемент управления asp исчез…
В этом случае ответ: Нет, вы не можете сгенерировать с помощью asp:TextBox
элемента управления какую-либо разметку (узел, отличный от текстового узла) внутри textarea
— он генерирует только текст внутри него.
Следовательно, вы должны явно сгенерировать textarea
и <xsl:value-of>
на сервере.
Комментарии:
1. На самом деле я выполняю преобразование на стороне клиента. Я должен был указать… поэтому я не могу создать элемент управления с помощью XSLT. Обычная текстовая область работает нормально… Я просто надеялся использовать элемент управления .net, чтобы мне не пришлось писать некоторые проверки и тому подобное.
2. @ Jordan, я обновил свой ответ на эту новую информацию. Вы не можете использовать
asp:TextBox
для генерации чего-либо еще, кроме текста внутриtextarea
.3. Очень признателен. К вашему сведению, вы можете сделать это в текстовом поле, только не многострочном …. в качестве примера
<asp:TextBox ID="Oohrl" runat="server" CssClass="textEntry" ClientIDMode="Static" Text="{/oohru/form/oohrl}"></asp:TextBox>
Отлично работает, генерируя фактическое значение, хранящееся в /oohru / form / oohrl, а не этот буквальный текст. По какой-то причине текстовая область обрабатывается по-другому.4. Вау. Я не знал, что вы можете сделать это с помощью ASP — он ведет себя почти как XSLT 🙂
Ответ №2:
Вы можете привязать свойство Text элемента управления TextBox к этому значению в code-behind. Это может сработать. Кстати, что такое xsl и что вы хотите напечатать.
Ответ №3:
XSL и ASP.NET на самом деле мы не друзья.
Вы можете попробовать что-то вроде того, что вы найдете здесь, но если вы можете — перенесите свой xsl в файл ресурсов.