asp.net экранирование значения по умолчанию в текстовой области

#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 в файл ресурсов.