【发布时间】:2016-10-27 04:17:13
【问题描述】:
[HttpGet]
[LogInFilter]
public PartialViewResult MemberEdit(Int32 MemID) // Update PartialView
{
MemberTbl Mem = db.MemberTbls.Where(x => x.ID == MemID).FirstOrDefault();
MemberTbl MemInfo = new MemberTbl();
MemInfo.ID = Mem.ID;
MemInfo.Name = Mem.Name;
MemInfo.Post = Mem.Post;
MemInfo.Phone = Mem.Phone;
return PartialView(MemInfo);
}
[HttpPost]
[LogInFilter]
public JsonResult MemberEdit(GarhwalBhawan.Models.MemberTbl MemID) // Record Update
{
MemberTbl MemDt = db.MemberTbls.Where(x => x.ID == MemID.ID).FirstOrDefault();
if (ModelState.IsValid)
{
MemDt.Name = MemID.Name;
MemDt.Post = MemID.Post;
MemDt.Phone = MemID.Phone;
db.SaveChanges();
myMessage = "Success";
}
else
{
myMessage = "Failed";
}
return Json(myMessage, JsonRequestBehavior.AllowGet);
}
我的控制器中有上述 ActionResult。现在我想在 ID 的帮助下用 JSON 保存字段。 单击该按钮,我创建了以下 JQuery 方法。
$(document).ready(function () {
$('#memberSave').click(function () {
var Name = $("#Name").val();
var Post = $("#Post").val();
var Phone = $("#Phone").val();
var Member = {
"Name": Name, "Post": Post,
"Phone": Phone
};
$.post("/Admin/MemberEdit", Member,
function (data) {
if (data == "Success") {
window.location.href = 'MemberView';
}
else if (data == "Failed") {
alert('Cannot Save!! Please Fill all Details or Contact Support')
}
else {
alert(data);
}
}, 'json');
});
});
Thus I've created a button:-
<input id="memberSave" type="button" value="Save Changes" />
但单击此按钮时显示错误:- 加载资源失败:服务器响应状态为 500(内部服务器错误) 并提醒我:- alert('无法保存!请填写所有详细信息或联系支持人员')。
请帮忙。
【问题讨论】:
-
你需要学会调试你的代码!打开您的浏览器工具(网络选项卡)并查看响应 - 它将包含错误的详细信息。你的代码可以简单地是
$.post("/Admin/MemberEdit", $('form').serialize(), function (data) {。但这有什么意义 - 如果成功,您只想重定向,所以不要使用 ajax - 进行正常提交。 -
而且您几乎肯定会发生错误,因为您从未传递 ID 属性的值,因此
MemID.ID是0和MemDt因此是null和MemDt.Name = MemID.Name;抛出NullReferenceException -
在上面的代码中 $('form').serialize() 会做什么?
-
它将替换您的
$('#memberSave').click(function () {函数的前 7 行 :) - 当已经有一个函数可以为您正确完成所有这些代码时,编写所有代码是没有意义的 -
您不能只编辑您的问题以现在显示正确的代码 - 它不再是一个问题! (我已经回滚了你的更改)
标签: jquery sql-server json asp.net-mvc