C# ajax将null发送到控制器,但可以使用硬编码变量
我在vs代码中制作了一个简单的应用程序,我想将值保存到数据库中,这就是我到目前为止所做的C# ajax将null发送到控制器,但可以使用硬编码变量,c#,jquery,ajax,asp.net-mvc,asp.net-ajax,C#,Jquery,Ajax,Asp.net Mvc,Asp.net Ajax,我在vs代码中制作了一个简单的应用程序,我想将值保存到数据库中,这就是我到目前为止所做的 var naziv = $("#TextNaziv").val(); var cena = $("#TextCena").val(); var opis = $("#TextOpis").val(); //console.log("Cena:" + cena);
var naziv = $("#TextNaziv").val();
var cena = $("#TextCena").val();
var opis = $("#TextOpis").val();
//console.log("Cena:" + cena);
// console.log("Opis:" + opis);
// console.log("Naziv:" + naziv);
var proizvod = {
Naziv: "nazivTest123",
Cena: 33,
Opis: "opisTest123"
}
// console.log(proizvod);
var zahtev = $.ajax({
type: "POST",
url: "/Home/UbaciProizvod",
data: JSON.stringify(proizvod),
contentType: "application/json",
dataType: "text",
});
这很好,没有任何问题,但当我将var proizvod更改为:
var proizvod = {
Naziv: naziv,
Cena: cena,
Opis: opis
}
应用程序不会将值保存到数据库中,即使我在控制台中签了名,并且值很好,控制器也会收到空值。我尝试了我在互联网上看到的一切,但似乎没有任何帮助,可能是一些小问题,但我无法解决它,我的控制器功能如下所示:
public int UbaciProizvod([FromBody] Proizvod p )
{
string upit = @"INSERT INTO Proizvod VALUES(@Naziv,@Cena,@Opis);
SELECT CAST(SCOPE_IDENTITY() AS int)";
using(SqlConnection konekcija = new SqlConnection(Konekcija.CnnMagacin))
{
try
{
int id = konekcija.QuerySingleOrDefault<int>(upit,p);
return id;
}
catch (System.Exception)
{
return -1;
}
}
}
public intubaciproizvod([FromBody]Proizvod p)
{
字符串upit=@“插入Proizvod值(@Naziv、@Cena、@Opis);
选择CAST(SCOPE_IDENTITY()作为int)”;
使用(SqlConnection-konekcija=newsqlconnection(konekcija.CnnMagacin))
{
尝试
{
int id=konekcija.QuerySingleOrDefault(upit,p);
返回id;
}
捕获(系统异常)
{
返回-1;
}
}
}
这是我的第一篇帖子,因此欢迎所有建议和批评,并对变量名表示歉意。这两个版本的区别在于,您在工作版本中提供了
Cena
作为整数值,但在非工作版本中提供了字符串
要在发出AJAX请求之前修复对值的调用parseInt()
:
var proizvod = {
Naziv: naziv,
Cena: parseInt(cena, 10),
Opis: opis
}
我建议您调试从请求返回的响应。话虽如此,我能看到的唯一区别是
val()
返回一个字符串,而在工作的硬编码版本中,您给Cena
一个整数值。因此,您可能需要将其转换为整数:Cena:parseInt(Cena,10)
非常有效,谢谢您,我的兄弟!,我像你建议的那样使用了“Cena:parseInt(Cena,10)”,它解决了所有问题。再次感谢你,小伙子,这很有帮助。我添加了它作为您的答案谢谢您的回答,但是现在您提到了SQL注入,我必须问您更多的问题,我知道它是什么,但是您确定上面的代码对SQL注入是开放的,因为我发现了在上插入值的完全相同的方法,我也看到了一些使用dapper这样的教程,sql查询中有参数,据我所知,Dapper是一个ORM,它映射实体属性和匹配的sql列。事实上,我很想念你,因为你在使用简洁的代码,并且误读了你的代码。我的错误。