当前位置: 代码迷 >> ASP.NET >> 怎样显示带有<script>的内容?多谢
  详细解决方案

怎样显示带有<script>的内容?多谢

热度:4117   发布时间:2013-02-26 00:00:00.0
怎样显示带有<script>的内容?谢谢!
我做了一个站内信的asp.net程序,在发送消息的SendMessage.aspx中:
(Message是我定义的一个类,完成处理Message的相关工作)

    IMessage   word   =   new   Message();
    (进行对用户输入内容的有效性以及安全性检查)
    Message.AddMessage(...,Server.HtmlEncode(MsgTitle.Text.Trim()),Server.HtmlEncode(MsgBody.Text.Trim()),...);

这样用户输入的信息就以HtmlEncode的形式存入了数据库。

然后在显示消息的时候:

    IMessage   word   =   new   Message();
    OleDbDataReader   DBReader   =   word.GetSingleMessage(MessageID);
    MsgTitle.Text   =   Server.HtmlDecode(DBReader[ "Title "].ToString());
    MsgBody.Text   =   Server.HtmlDecode(DBReader[ "Body "].ToString());

以上两段代码都能够正常处理标题或内容中含有 <script> 的情况。

但是问题如下:

在一个前台页面(MessageManage.aspx)的GridView控件的内容中,实现只显示邮件内容的前30个字符+省略号:
<asp:TemplateField     HeaderText= "信件内容 ">
    <ItemTemplate>
          <%#   SystemTools.ShortTitle(Server.HtmlDecode(Eval( "Body ").ToString()),   25)   %>
    </ItemTemplate>
</asp:TemplateField>

如果数据库中的内容是:
1、“ <script> alert( "Warning "); </script> ”这样完整的内容,经过HtmlDecode后依然会有IE警告对话框弹出,这是不应该的。
2、“ <script> alert( "Warning”这样“不完整”的内容,该单元格以后的所有内容都不会被显示,运行后的HTML如下:
    <td   align= "left ">
        <script> alert( "Warning!!!...
    </td>

请大家帮忙如何解决在GridView控件中的数据绑定过程中能够正确显示数据库中的原内容(不解析任何语句)?

最好能有 <ItemTemplate> 的源码,完成内容的30个字符+省略号和显示数据库原内容的两项功能。

谢谢!


------解决方案--------------------------------------------------------
<%# Server.HtmlEncode(Eval( "Body ").ToString())%>
或者﹕
<%# Server.HtmlEncode(DataBinder.Eval(Container.DataItem, "Body ").ToString())%>

輸出不用:HtmlDecode
就用:HtmlEncode
  相关解决方案