asp.net 文本区域默认值转义

Posted

技术标签:

【中文标题】asp.net 文本区域默认值转义【英文标题】:asp.net text area default value escaping 【发布时间】: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;,希望这对以后遇到类似问题的人有所帮助! 【参考方案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 移植到资源文件中。

【讨论】:

以上是关于asp.net 文本区域默认值转义的主要内容,如果未能解决你的问题,请参考以下文章

使用 html 表单和 php 验证空白文本区域或是不是存在默认值

PHP:mysql返回值“转义”文本区域

ASP.NET MVC3 - 带有@Html.EditorFor 的文本区域

如何在点击时清除文本区域?

在发布和重用值后,在文本区域中显示用换行符分隔的值

JavaScript 不会在 asp.net 中隐藏文本区域