我正在尝试使用Ajax.beginform在mvc中发送表单并执行成功函数。该函数在表单中声明,并在脚本部分中创建。但是,帖子提交后不会触发该功能。
该视图是部分视图,并已插入“索引”页面。
窗体在控制器中调用的方法是HttpPost并再次返回视图,这导致索引页再次加载。(我怀疑这是问题所在)
基本上,我想实现的目标是在我的索引页(主)中显示一个div,表示已成功编辑记录。
此外,在我的捆绑包配置中,我加载了jQuery val和jquery.validate.unobtrusive.js,并在我添加到appconfig中的web.config中
可能是什么问题?这是我的代码。
[HttpPost]
public async Task<ActionResult> EditPostedJob(JobPost job, string dt)
{
using (var context = new ApplicationDbContext())
{
var post = (from p in context.jobPosts where p.JobPostId == job.JobPostId select p).First();
post.AboutJob = job.AboutJob;
post.Headline = job.Headline;
post.JobAddress = job.JobAddress;
post.JobCity = job.JobCity;
post.JobPostCode = job.JobPostCode;
await context.SaveChangesAsync();
//return Json(post,JsonRequestBehavior.AllowGet);
return RedirectToAction("Index", "Manage");
}
}
在我的主视图中,我收到此消息
<div id="success-edited-job" class="alert alert-success">
<strong>Success!</strong> the posted job has been successfully edited.
</div>
,还有我的js,它在页面加载时将其隐藏。然后,我在表单中添加部分视图,并设置了成功编辑作业div以显示发布成功的时间,但它再次返回索引视图,并且div被再次隐藏。
这是我的局部视图表格
@using (Ajax.BeginForm("EditPostedJob", FormMethod.Post, new AjaxOptions() { OnSuccess = "JobEditedSuccessfully", OnFailure = "JobEditFail",HttpMethod="POST" }))
和js
<script type="text/javascript">
function JobEditedSuccessfully(data) {
alert("lol");
}
function JobEditFail(error) {
console.error(error);
}
</script>