我的项目中有一个注册的部分,用户名随便,现在如果输入了一个html标签,如:<td>a</td>,从数据库读出并绑定到GridView上,结果格式都变了,多出了一列,请高手解决。

解决方案 »

  1.   

    进行编码
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField HeaderText="name">
                    
                      <asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>' ></asp:Label>
                      <%# Eval("Name","HtmlEncode{0}" )%>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
      

  2.   

     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField HeaderText="name">
                    
      <asp:Label ID="Label1" runat="server" Text=<%# Eval("Name","HtmlEncode{0}" )%> ></asp:Label>
                      
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
      

  3.   

    給你兩段代碼,原理自己去琢磨//將html轉為text
            public string HtmlToText(string strContent)
            {
                strContent = strContent.Replace("&amp", "&");
                strContent = strContent.Replace("''", "'");
                strContent = strContent.Replace("&lt", "<");
                strContent = strContent.Replace("&gt", ">");
                strContent = strContent.Replace("&lt", "chr(60)");
                strContent = strContent.Replace("&gt", "chr(37)");
                strContent = strContent.Replace("&quot", "\"");
                strContent = strContent.Replace(";", ";");
                strContent = strContent.Replace("<br />", "\n");
                strContent = strContent.Replace("&nbsp;", " ");
                return strContent;
            }        //將text轉為html
            public string TextToHtml(string strContent)
            {
                strContent = strContent.Replace("&", "&amp");
                strContent = strContent.Replace("'", "''");
                strContent = strContent.Replace("<", "&lt");
                strContent = strContent.Replace(">", "&gt");
                strContent = strContent.Replace("chr(60)", "&lt");
                strContent = strContent.Replace("chr(37)", "&gt");
                strContent = strContent.Replace("\"", "&quot");
                strContent = strContent.Replace(";", ";");
                strContent = strContent.Replace("\n", "<br/>");
                strContent = strContent.Replace(" ", "&nbsp;");
                return strContent;        }
      

  4.   

    void submitBtn_Click(object sender, EventArgs e) 
      ...{ 
        // 将输入字符串编码,这样所有的HTML标签都失效了。 
        StringBuilder sb = new StringBuilder( 
                                HttpUtility.HtmlEncode(htmlInputTxt.Text)); 
        // 然后我们选择性的允许 <b> 和 <i> 
        sb.Replace("&lt;b&gt;", " <b>"); 
        sb.Replace("&lt;/b&gt;", ""); 
        sb.Replace("&lt;i&gt;", " <i>"); 
        sb.Replace("&lt;/i&gt;", ""); 
        Response.Write(sb.ToString()); 
      } 
      

  5.   

       Response.Write(Server.HtmlEncode("<script>alert('ok')</script>"));你试下把Server.HtmlEncode去掉与不去就明白了