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">
<xsl:value-of select="/oohru/form/desc" />
</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 文件中的<textarea rows="4" cols="50" id="Description" runat="server"> <xsl:value-of select="/oohru/form/desc" /> </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
中看到字符串"<xsl:value-of select="/oohru/form/desc" />"
,那么您看到它并不重要(在被浏览器显示之前) 转义 -- 当浏览器显示它时,用户将看到未转义的文本。
更新:@Jordan 进一步澄清了他的转换是客户端的——在 asp 控制消失之后...
在这种情况下,答案是:不,您不能使用asp:TextBox
控件在textarea
内生成任何标记(文本节点以外的节点)-- 它只会在其中生成文本它。
因此,您必须在服务器上显式生成textarea
和<xsl:value-of>
。
【讨论】:
我实际上是在做客户端的转换。我应该指定...所以我不能用 XSLT 创建控件。常规文本区域工作正常...我只是希望使用 .net 控件,这样我就不必编写一些验证等。 @Jordan,我更新了我对这个新信息的回答。您不能使用asp:TextBox
在textarea
中生成除文本之外的任何内容。
非常感谢。仅供参考,您可以在文本框中进行操作,而不是在多行文本框中进行操作....例如<asp:TextBox ID="Oohrl" runat="server" CssClass="textEntry" ClientIDMode="Static" Text="/oohru/form/oohrl"></asp:TextBox>
可以很好地生成 /oohru/form/oohrl 所持有的实际值,而不是文字文本。由于某种原因,文本区域的处理方式不同。
哇。我不知道你可以用 ASP 做到这一点——它的行为几乎就像 XSLT :)【参考方案2】:
您可以在代码隐藏中将 TextBox 控件的 Text 属性绑定到该值。那可能行得通。顺便说一句,什么是 xsl 以及您想要打印的内容。
【讨论】:
【参考方案3】:XSL 和 ASP.NET 并不是真正的朋友。
您可以尝试类似here 的方法,但如果可以的话 - 将您的 xsl 移植到资源文件中。
【讨论】:
以上是关于asp.net 文本区域默认值转义的主要内容,如果未能解决你的问题,请参考以下文章
使用 html 表单和 php 验证空白文本区域或是不是存在默认值