【发布时间】:2018-12-16 10:40:24
【问题描述】:
我是初学者并尝试通过在 Entity Framework MVC 中使用 Ajax 调用 来更新我的记录。我成功获得idtoSearch,但在控制器端没有获得std.FirstName 和std.LastName。正如您在我的代码中看到的那样
AjaxStudentController
[HttpPost]
public ActionResult UpdateStudent(Student std, int idtoSearch) {
using (StudentContext db = new StudentContext()) {
Student updatestd = db.Student.Find(idtoSearch);
if (!string.IsNullOrWhiteSpace(std.FirstName)) { updatestd.FirstName = std.FirstName; }
if (!string.IsNullOrWhiteSpace(std.LastName)) { updatestd.LastName = std.LastName; }
db.SaveChanges();
}
return Json(true, JsonRequestBehavior.AllowGet);
}
在这里你可以看到 ajax 代码
<button class='upbtn' data-upid=" + stdid + ">Update</button>
$(".upbtn").click(function () {
var student = {
"upFirstName" : $("#name").val(),
"upLastName" : $("#lname").val(),
}
$.ajax({
url: "/AjaxStudent/UpdateStudent",
method: "Post",
data: {
idtoSearch: upid,
std: student
}
}).done(function(){
alert("Update button");
}).
error(function () {
alert("Update Error");
});
});
我无法在浏览器上获得任何更新。有人请告诉我该怎么做。
【问题讨论】:
-
您的 ajax 调用是否返回 200 OK 响应?检查您的浏览器开发工具。您收到任何警报了吗?
-
upid变量在哪里定义或初始化? -
@Shyju 我正在浏览器中获取 更新按钮,
upid在更新按钮中被初始化 -
那么什么不起作用?如果您看到“更新按钮”,这意味着您的 ajax 调用从您的操作方法调用中收到了 200 OK。您的预期行为是什么?
-
您没有以正确的格式发送数据。如果要发送一个复杂对象和另一个对象,则需要
data: JSON.stringify({ idtoSearch: upid, std: student }),并且需要添加contentType: 'application/json'选项。但是您的属性名称似乎甚至不匹配 - 您的模型有一个属性FirstName,但您发送了一个名为upFirstName的属性的值
标签: ajax asp.net-mvc entity-framework-6 entity-framework-4 asp.net-ajax