C# Ajax发布到Asp.net MVC
我想用AJAX在数据库中存储数据,我正在使用ADO.Net。但是,它不起作用 这是我的代码: 控制器C# Ajax发布到Asp.net MVC,c#,ajax,asp.net-mvc,ado.net,C#,Ajax,Asp.net Mvc,Ado.net,我想用AJAX在数据库中存储数据,我正在使用ADO.Net。但是,它不起作用 这是我的代码: 控制器 [HttpPost] public JsonResult InsertScore(ScoresQ scores) { db.ScoresQs.Add(scores); db.SaveChanges(); return Json("true&
[HttpPost]
public JsonResult InsertScore(ScoresQ scores)
{
db.ScoresQs.Add(scores);
db.SaveChanges();
return Json("true", JsonRequestBehavior.AllowGet);
}
型号
public partial class ScoresQ
{ [Key]
public int id { get; set; }
private DateTime? month = null;
public DateTime DateCreated
{
get
{
return this.month.HasValue
? this.month.Value
: DateTime.Now;
}
set { this.month = value; }
}
public Nullable<int> status { get; set; }
public Nullable<int> score { get; set; }
}
public部分类分数sq
{[关键]
公共int id{get;set;}
私有日期时间?月=空;
已创建公共日期时间日期
{
得到
{
返回this.month.HasValue
?本月价值
:DateTime.Now;
}
设置{this.month=value;}
}
公共可空状态{get;set;}
公共可空分数{get;set;}
}
ajaxpost
js中的ajax。不在视野中
function showScore(data) {
quiz.style.display = "none";
scoreBlock.style.display = "block";
scoreBlock.innerHTML = "<p> You scored " + score + " out of " + data.length + "</p>";
console.log(score);
if (score < 4) {
scoreMessage.innerHTML = "<p>Not so good! Time for some revision.</p>";
}
else if (score < 8) {
scoreMessage.innerHTML = "<p>Pretty good! But still room for improvement.</p>"
}
else {
scoreMessage.innerHTML = "<p>Great work! You really know your birds!</p>"
}
$.ajax({
type: "post",
url: "Home/InsertScore",
dataType: "json",
data: { score: score, status: 1},
success: function (data) {
console.log("Success");
},
error: function () {
console.log("error");
}
});
scoreMessage.style.display = "block";
quizAgain.style.display = "block";
}
函数showScore(数据){
quick.style.display=“无”;
scoreBlock.style.display=“block”;
scoreBlock.innerHTML=“您在“+data.length+”中得分“+score+””;
控制台日志(score);
如果(分数<4){
scoreMessage.innerHTML=“不太好!该做些修改了。”;
}
否则如果(分数<8){
scoreMessage.innerHTML=“很好!但仍有改进的余地。”
}
否则{
scoreMessage.innerHTML=“太棒了!你真的很了解你的鸟!”
}
$.ajax({
类型:“post”,
url:“主页/插入分数”,
数据类型:“json”,
数据:{分数:分数,状态:1},
成功:功能(数据){
控制台日志(“成功”);
},
错误:函数(){
控制台日志(“错误”);
}
});
scoreMessage.style.display=“block”;
quizAgain.style.display=“block”;
}
这里是错误
System.InvalidOperationException:“实体类型ScoresQ不是当前上下文模型的一部分。”
正如错误所示,问题在于将对象添加到数据库的代码中。共享该代码以供进一步分析。您从JQuery发送的模型与Controller中的模型不符。 尝试以以下方式修改它:
$.ajax({
type: "post",
url: "Home/InsertScore",
dataType: "json",
data: {model.month: month, model.DateCreated: date, model.score: score, model.status: 1},
success: function (data) {
console.log("Success");
},
error: function () {
console.log("error");
}
});
我已经修复了错误,我只是像这样更改ajax代码
$.ajax({
type: "post",
url: "Home/InsertScore",
dataType: "json",
data:
{"score": score, "status": 1},
success: function (data) {
console.log("Success");
},
error: function () {
console.log("error");
}
});
在ajax中单独传递变量,需要作为对象传递 试试下面的代码
var scores = {score: score, status: 1};
$.ajax({
type: "post",
url: "Home/InsertScore",
dataType: "json",
data: scores ,
success: function (data) {
console.log("Success");
},
error: function () {
console.log("error");
}
});
此ajax代码包含在.js中,而不是视图中。因此,它无法在控制器中检索模型。当我尝试像您的建议那样更改代码时,js函数不起作用。我的意思是,您使用ajax发送给控制器的JSON对象必须与您的域模型具有相同的字段。否则控制器无法将JSON对象解析为域模型对象。