【发布时间】:2020-02-21 14:20:45
【问题描述】:
我正在将一组 JSON 数据从客户端传递到服务器端 (c#)。但是,当我尝试将这些数据插入到 SQL 表中时,我在查询执行的那一刻就得到了这个 Newtonsoft.Json.Linq.JValue。
这是我目前的代码:
客户端(js);
var json = [];
var Firstcotizacion = {
idCotizacion: "111111",
idProyecto: "8047",
nombreProyecto: "Edificio Caiquen",
idProducto: "MLC462815278"
}
var Secondcotizacion = {
idCotizacion: "222222",
idProyecto: "1234",
nombreProyecto: "Edificio malbec",
idProducto: "MLC29870FD"
}
json.push(Firstcotizacion)
json.push(Secondcotizacion)
$.post("../Ajax/GuardaCotizacionesPI", { json: JSON.stringify(json) }, function (data) {
console.log(data)
});
服务器端(C#):
public string GuardarCotizacion(string json)
{
string SP_INSERTA_COTIZACIONPI = "SVI_CPI_COTIZACION_PI";
dynamic cotizaciones = JsonConvert.DeserializeObject(json);
foreach (var cotizacion in cotizaciones)
{
using (SqlConnection conexion = new SqlConnection(Inventa.PazCorp.Data.BaseDatos.StringConexionGestionContactos(System.Configuration.ConfigurationManager.AppSettings["ambiente"].ToString())))
{
conexion.Open();
using (SqlCommand comm = new SqlCommand(SP_INSERTA_COTIZACIONPI, conexion))
{
comm.CommandType = System.Data.CommandType.StoredProcedure;
comm.Parameters.AddWithValue("IDCOTIZACION", cotizacion.idCotizacion);
comm.Parameters.AddWithValue("IDPROYECTO", cotizacion.idProyecto);
comm.Parameters.AddWithValue("NOMBRE_PROYECTO", cotizacion.nombreProyecto);
comm.Parameters.AddWithValue("IDPRODUCTO", cotizacion.idProducto);
comm.ExecuteNonQuery(); //Here is where the error appears
}
}
}
return json;
}
任何想法可能是错的?
【问题讨论】:
-
您调用了
/Ajax/GuardaCotizacionesPI,但随后显示了一个名为GuardarCotizacion的方法。第一个与第二个如何连接? -
你为什么要反序列化到
dynamic?使用一个具体的类,这一切都消失了。此外,每次使用dynamic,都会有一只小猫死亡。 -
@peterB 它们由控制器连接
-
@DavidG :说的是最纯粹的事实。你为什么使用动态?您应该使用显式类型。尝试在 Cotizaciones 类中实现 List
,并使用 JsonConvert.DeserializeObject (json)。
标签: c# sql json asp.net-mvc