【发布时间】:2021-05-29 18:17:01
【问题描述】:
我通过 Ajax Post 方法插入数据。数据被插入到一个表中,但第二个表的数据没有插入。我已经检查了代码,但我不确定我的代码中缺少什么。
当我使用直接控制器方法时,数据会插入两个表中,但当我使用 Ajax 时,数据仅插入一个表中。
我的旧控制器代码:
[HttpPost]
public ActionResult Create(StudentModel model)
{
if(ModelState.IsValid)
{
int id = stude.AddStudent(model);
if(id>0)
{
ModelState.Clear();
ViewBag.Success = "Data added Successfully";
}
}
return View();
}
我的 Ajax 控制器代码:
[HttpPost]
public JsonResult Creates(StudentModel model)
{
if (ModelState.IsValid)
{
int id = stude.AddStudent(model);
if (id > 0)
{
ModelState.Clear();
ViewBag.Success = "Data added Successfully";
return Json("success", JsonRequestBehavior.AllowGet);
}
}
return Json("issue", JsonRequestBehavior.AllowGet);
}
我的模型代码:
public int AddStudent(StudentModel stu)
{
student stud = new student()
{
FName = stu.FName,
LName = stu.LName,
Email = stu.Email
};
if (stu.address != null) {
stud.address= new address()
{
Details = stu.address.Details,
Country = stu.address.Country,
State = stu.address.State
};
}
using (var context = new StudentEntities())
{
context.students.Add(stud);
context.SaveChanges();
}
return stud.Id;
}
我的 Js/Ajax 代码:
$(document).ready(function () {
//Add record
$("#add").click(function (e) {
e.preventDefault();
// var id = $();
var fname = $("#FName").val();
var lname = $("#LName").val();
var email = $("#Email").val();
var details = $("#Details").val();
var country = $("#Country").val();
var state = $("#State").val();
$.ajax({
async: true,
method: "POST",
url: '@Url.Action("Creates")',
data: JSON.stringify({
FName: fname, LName: lname, Email: email, Details: details,County: country, State: state
}),
dataType: 'JSON',
contentType: "application/json; charset=utf-8",
success: function (data) {
//window.location = data.newurl;
console.log(data);
},
error: function (err) {
alert('Failed to get data' + err);
}
});
return false;
});
});
数据仅插入到学生表中,对于地址表,它返回 null/empty 并跳过数据,但如果我删除 Ajax,相同的代码将起作用。但我想使用 Ajax,这样一切都会顺利进行。
任何帮助将不胜感激。
更新:学生模型类:
我正在使用 N-Tire/3-Tire 架构
我的学生班级属性
public class StudentModel
{
public int Id { get; set; }
public string FName { get; set; }
public string LName { get; set; }
public string Email { get; set; }
public Nullable<int> AddressId { get; set; }
public AddressModel address { get; set; }
}
我的地址类属性
public class AddressModel
{
public int Id { get; set; }
public string Details { get; set; }
public string State { get; set; }
public string Country { get; set; }
}
}
【问题讨论】:
-
你能发布 StudentModel 、 Student 和 Address 类吗?
-
我已经更新了代码。
-
谢谢,但我猜你也有 Student 和 Addresses 课程?
-
数据插入问题几乎已处理,但现在我没有收到我在视图包中设置的成功消息。你可以在上面的控制器代码中看到它。
标签: ajax asp.net-mvc asp.net-ajax