【问题标题】:asp.net text area default value escapingasp.net 文本区域默认值转义
【发布时间】:2011-12-27 22:27:22
【问题描述】:

注意:这是一个 asp.net 页面,但 XSLT 转换发生在客户端。 所以我试图在 asp.net textarea 中设置一个默认值,它正在被转义,这给我带来了问题

这里是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">
&lt;xsl:value-of select="/oohru/form/desc" /&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,但仅在 textarea 上......

谢谢!

注意:我也尝试过在文本区域内使用 text="{/oohru/form/desc}" ......文本区域包含确切的 oohru/form/desc 而不是引用的值。

【问题讨论】:

  • 当我需要引用 Description.InnerText 的值时,解决方案最终是 cs 文件中的&lt;textarea rows="4" cols="50" id="Description" runat="server"&gt; &lt;xsl:value-of select="/oohru/form/desc" /&gt; &lt;/textarea&gt;,希望这对以后遇到类似问题的人有所帮助!

标签: c# asp.net xml xslt textarea


【解决方案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 中看到字符串"&lt;xsl:value-of select="/oohru/form/desc" /&gt;",那么您看到它并不重要(在被浏览器显示之前) 转义 -- 当浏览器显示它时,用户将看到未转义的文本。

更新:@Jordan 进一步澄清了他的转换是客户端的——在 asp 控制消失之后...

在这种情况下,答案是:不,您不能使用asp:TextBox 控件在textarea 内生成任何标记(文本节点以外的节点)-- 它只会在其中生成文本它。

因此,您必须在服务器上显式生成textarea&lt;xsl:value-of&gt;

【讨论】:

  • 我实际上是在做客户端的转换。我应该指定...所以我不能用 XSLT 创建控件。常规文本区域工作正常...我只是希望使用 .net 控件,这样我就不必编写一些验证等。
  • @Jordan,我更新了我对这个新信息的回答。您不能使用asp:TextBoxtextarea 中生成除文本之外的任何内容。
  • 非常感谢。仅供参考,您可以在文本框中进行操作,而不是在多行文本框中进行操作....例如&lt;asp:TextBox ID="Oohrl" runat="server" CssClass="textEntry" ClientIDMode="Static" Text="{/oohru/form/oohrl}"&gt;&lt;/asp:TextBox&gt; 可以很好地生成 /oohru/form/oohrl 所持有的实际值,而不是文字文本。由于某种原因,文本区域的处理方式不同。
  • 哇。我不知道你可以用 ASP 做到这一点——它的行为几乎就像 XSLT :)
【解决方案2】:

您可以在代码隐藏中将 TextBox 控件的 Text 属性绑定到该值。那可能行得通。顺便说一句,什么是 xsl 以及您想要打印的内容。

【讨论】:

    【解决方案3】:

    XSL 和 ASP.NET 并不是真正的朋友。

    您可以尝试类似here 的方法,但如果可以的话 - 将您的 xsl 移植到资源文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 2011-08-30
      • 1970-01-01
      • 2018-10-01
      • 2011-04-17
      • 1970-01-01
      • 2023-01-03
      相关资源
      最近更新 更多