我想将html标签插入数据库,结果总是报错,A potentially dangerous Request.Form value was detected from the client ,之后我在网上查了很多资料,说是要在页面指令上加上 ValidateRequest="false",我加了,可还是会报错,所以将代码贴出,让大家找出问题的所在
首先是.aspx的前台代码,我放了一个textarea文本框和两个按钮,现在textarea中输入内容,然后点击插入按钮插入数据库,然后再点击另外一个取出数据,显示在textarea中<%@ Page Language="C#"  AutoEventWireup="true" Debug="true" CodeFile="Default.aspx.cs"  ValidateRequest="false" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <textarea id="neirong" rows="22" style=" height:100px; width:200px" runat="server"></textarea>
    <asp:Button ID="button1" Text="插入" runat="server" onclick="button1_Click" />
        <asp:Button ID="Button2" runat="server" Text="取出" onclick="Button2_Click" />
    </div>
    </form>
</body>
</html>
 然后是后台的两个方法,第一个是插入方法
  protected void button1_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection("server=.\\writer;database=HT;uid=sa;pwd=4411901");
        conn.Open();        SqlCommand cmd = new SqlCommand("insert into tests values('" + neirong.InnerHtml + "')", conn);        cmd.ExecuteNonQuery();
         
        conn.Close();
    }然后是取出方法  protected void Button2_Click(object sender, EventArgs e)
    {
        DataSet ds = new DataSet();
        SqlConnection conn = new SqlConnection("server=.\\writer;database=HT;uid=sa;pwd=4411901");
        SqlCommand cmd = new SqlCommand("select * from tests", conn);        SqlDataAdapter da = new SqlDataAdapter(cmd);        da.Fill(ds);        neirong.Value = ds.Tables[0].Rows[11][0].ToString();    }请各位大侠拔刀相助,给我找出问题的根结所在,不胜感激。此外,我是想实现文章正文的格式,所以要将html标签插入数据库中,除了这个方法外,还有其他的好方法吗,求解!
       

解决方案 »

  1.   

    tests 的结构是怎样的?只要超过1个字段,下面这句
    SqlCommand cmd = new SqlCommand("insert into tests values('" + neirong.InnerHtml + "')", conn);sql语句错误的概率就很大了
      

  2.   

    里面就是一个字段,我试过了,sql语句没有出错
      

  3.   

    加了ValidateRequest="false"理应不会出现你所说的错误,或许你需要修改一下web.config文件
    插入数据库的时候你的sql拼接方式不好,因为neirong.InnerHtml就不能含有'了,试试SQL的Parameter类方法
    带格式文本的存储我一般也是直接存html文本,同求更好的解决方案
      

  4.   


    我连web.config也修改过了,可还是报错,你所说的拼接方式不好,里面不能含有',能贴出具体的代码吗,应该怎么写,谢谢
      

  5.   

    你把innerHtml改为innerText。ToString()试试,
      

  6.   

    你不转化掉html中的特殊字符当然不让你放入数据库中~\(≧▽≦)/~啦啦啦
    public static string EncodeHtml(string strUserInput)
    {
    if (String.IsNullOrEmpty(strUserInput))
    throw new ArgumentException("strUserInput is null or empty.", "strUserInput");
    strUserInput = strUserInput.Replace("&", "&amp;");
    strUserInput = strUserInput.Replace("'", "''");
    strUserInput = strUserInput.Replace("\"", "&quot;");
    strUserInput = strUserInput.Replace(" ", "&nbsp;");
    strUserInput = strUserInput.Replace("<", "&lt;");
    strUserInput = strUserInput.Replace(">", "&gt;");
    strUserInput = strUserInput.Replace("\n", "<br>");
    return strUserInput.Trim();
    }
    [color=#FF0000]要记着给我加分~\(≧▽≦)/~啦啦啦
    [/color]