日期:2014-05-17  浏览次数:20390 次

&lt;和<互相替换的问题
数据库中的内容是这样的:
<p>
abc<br/>
cde<br/>
</p>
读出到网页,赋值给hiddenfile,源文件怎么就变成了
&lt;p>
abc &lt;br/>
cde &lt;br/>
&lt;/p>

然后读出到网页上显示的是
<p>
abc<br/>
cde<br/>
</p>
现在让网页上显示:
abc
cde

------解决方案--------------------
hiddenfile是什么东东?你看下控件有没有自动html编码的属性设置,要设置为false。
------解决方案--------------------
赋值给label。

hiddenfile是什么东东?
------解决方案--------------------
asp.net 4如果对控件赋值,为了安全已经会自动htmlencode

如果你不想控件自动编码,需要重写htmlencode

你可以
    public class HtmlAttributeNoEncoding : System.Web.Util.HttpEncoder 
    { 
        protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output) 
        { 
            StringBuilder sb = new StringBuilder(); 
            StringWriter sw = new StringWriter(sb); 
            base.HtmlAttributeEncode(value, sw); 
 
      //举个例子,把&#39;还原',其他类似
            output.Write(sw.ToString().Replace("&#39;","'").Replace("&lt;","<"); 
        }
    }


然后在web.config增加
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime encoderType="HtmlAttributeNoEncoding" />
------解决方案--------------------
HiddenField 又不会显示
------解决方案--------------------


HttpUtility.HtmlDecode试一试:
 HTML decoding reverses the encoding. For example, when embedded in a block of text, the characters < and > are encoded as &lt; and &gt; for HTTP transmission.

http://msdn.microsoft.com/en-us/library/7c5fyk1k.aspx
------解决方案--------------------
string str = @"&lt;p>
abc &lt;br/>
cde &lt;br/>
&lt;/p>";
            str = HttpUtility.HtmlDecode(str);

------解决方案--------------------
绑定到HiddenField肯定会自动html编码的,你要取出它的值时进行Html解码,然后再用。
------解决方案--------------------
js方法中,不能用innerText,应该改为var output = converter.innerHTML;