我从View上的JavaScript函数调用此ActionResult控制器方法。该函数工作正常,ActionResult控制器方法运行正常,但不应该发生它应该移动到不同视图的最后一行。我可以在新视图上单步执行代码行,但在逐步浏览新视图后,仍会显示原始视图。使用$ .get()调用是否正确?或者我应该使用其他一些jquery方法来调用控制器。在这个实例中,我不需要从控制器返回任何内容,只需运行一些数据库代码并移动到新视图。
控制器:
if (ModelState.IsValid)
{
System.Web.Security.MembershipUser user = Membership.GetUser();
var job = (from j in db.Jobs where j.ID == id select j).First();
job.DriverMembershipUserName = user.UserName.ToString();
job.JobStatus = "Purchased";
ViewBag.PurchaseMessage = "Thank you for purchasing this job.";
db.Entry(job).State = EntityState.Modified;
db.SaveChanges();
return View("JobDetail", job);
}
来自原始视图页面的JavaScript调用:
var url = "/Job/PurchaseJobFinalize/" + JobID;
$.get(url, function () { });
答案 0 :(得分:1)
考虑使用
@Html.ActionLink("PurchaseJobFinalize", "Job", new { JobID: JobID});
您现在使用的是对服务器的ASync调用,它只会返回视图的渲染html。
然而,您可以将调用结果放入div中,这样您就可以进入SPA(单页应用程序)空间。
或者你可以试试这个
window.location = "/Job/PurchaseJobFinalize/" + JobID;
或者你可以尝试
window.location.assign("/Job/PurchaseJobFinalize/" + JobID)