Ajax POST插入一半数据(部分数据丢失)Net MVC Ajax



我通过Ajax Post方法插入数据。数据被插入到一个表中,但另一个表的数据没有被插入。我已经检查了代码,但我不确定我的代码中缺少什么。

当我使用直接控制器方法时,数据将插入到两个表中,但当我使用Ajax时,数据仅插入到一个表中。

My Old working Controller code:

[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/空,数据被跳过,尽管如果我删除Ajax,相同的代码将工作。但是我想使用Ajax,这样事情就会顺利地进行。

任何帮助都将不胜感激。

更新:Student Model class:

我使用N-Tire/3-Tire Architecture

My Student class Properties

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; }
}

My Address Class Properties

public class AddressModel
{
public int Id { get; set; }
public string Details { get; set; }
public string State { get; set; }
public string Country { get; set; }
}
}

我的代码中有很多问题。我把它列在下面。

  1. 主要,我认为情况下的问题是我的文本框的Id,因为我使用剃刀引擎,它自动创建Id,这导致了这个问题,所以我通过手动添加Id和名称来修复它,如

    @Html。EditorFor(模型=比;model.address。Details, new {htmlAttributes = new {@class =" form-control" Name="Details" Id="Details"})

  2. 我已经改变了我的ajax数据代码:

    FName: FName, LName: LName, Email: Email, address: {Details: Details, Country: Country, State: State}

  3. 对于成功消息,我在控制器中更改了返回消息,如:

    var success = "数据添加成功"返回Json(new {success = true,成功},JsonRequestBehavior.AllowGet);

在我看来,我已经添加了这一行在我的ajax成功调用:

success: function (data) {

$("#msg").text(data.scess);
console.log(data);
},

希望这对其他用户也有帮助。

最新更新