【问题标题】:No mapping exists from object type System.Web.UI.WebControls.ListItem对象类型 System.Web.UI.WebControls.ListItem 不存在映射
【发布时间】:2026-01-24 12:15:01
【问题描述】:

我不知道出现此错误似乎是什么问题。任何人都可以提供一点帮助?


protected void send_Click(object sender, EventArgs e)
        {
            string UserId;

            MembershipUser p = Membership.GetUser(User.Identity.Name);

            UserId = p.ProviderUserKey.ToString();

            string cnnString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            SqlConnection conn = new SqlConnection(cnnString);

            string sql = "INSERT INTO [NOTICIA] (COD_EMPREGADO,TITULO,TIPO_CLIENTE,TIPO_ANIMAL,DATA_NOTICIA,DESCRICAO) VALUES (@cod_empregado,@titulo,@tipo_cliente,@tipo_animal,@data_noticia,@descricao) ";
            SqlCommand comando = new SqlCommand(sql, conn);

            conn.Open();
            comando.Parameters.Add(new SqlParameter("@cod_empregado", UserId));
            comando.Parameters.Add(new SqlParameter("@titulo", titulo.Text));
            comando.Parameters.Add(new SqlParameter("@tipo_cliente", DropDownListCliente.SelectedItem));
            comando.Parameters.Add(new SqlParameter("@tipo_animal", DropDownListAnimal.SelectedItem));
            comando.Parameters.Add(new SqlParameter("@data_noticia", DateTime.Now));
            comando.Parameters.Add(new SqlParameter("@descricao", descricao.Text));

            comando.ExecuteNonQuery();
            conn.Close();

            titulo.Text = "";
            descricao.Text = "";
            erros.Text = "Noticia publicada com sucesso";
        }

错误:

“System.ArgumentException”类型的异常发生在 System.Data.dll 但未在用户代码中处理

附加信息:对象类型不存在映射 System.Web.UI.WebControls.ListItem 到已知的托管提供程序本机 输入。

【问题讨论】:

  • @GrantWinney 我不知道...:s

标签: c# asp.net


【解决方案1】:

问题是DropDownListCliente.SelectedItem 和/或DropDownListAnimal.SelectedItem。您不想将整个项目作为值传递,而是将值取出,如下所示:

        comando.Parameters.Add(new SqlParameter("@tipo_cliente", DropDownListCliente.SelectedItem.Value));
        comando.Parameters.Add(new SqlParameter("@tipo_animal", DropDownListAnimal.SelectedItem.Value));

【讨论】:

  • 但现在我遇到了这个错误:“System.Data.dll 中发生了“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理附加信息:转换数据时出错键入 nvarchar 为数字。"
  • 新错误显然是因为您的数据库中的数据字段之一是整数,并且您试图将字符串传递给该字段。它可能是您的用户 ID 或数据库上的其他字段,如果它是整数,那么您不应该将您的用户 ID 转换为字符串,并且如果它的其他字段与您的 C# 代码的数据类型值匹配。
  • @AliShahrokhi,同意评估,但不是“明显”部分。对于有丰富经验的人来说显而易见的事情对于刚开始甚至改变技术的人来说往往并不明显。