MVC从JavaScript调用ActionResult方法

时间:2013-09-04 08:01:23

标签: jquery asp.net-mvc

我从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 () { });

1 个答案:

答案 0 :(得分:1)

考虑使用

@Html.ActionLink("PurchaseJobFinalize", "Job", new { JobID: JobID});

您现在使用的是对服务器的ASync调用,它只会返回视图的渲染html。

然而,您可以将调用结果放入div中,这样您就可以进入SPA(单页应用程序)空间。

或者你可以试试这个

window.location = "/Job/PurchaseJobFinalize/" + JobID;

或者你可以尝试

window.location.assign("/Job/PurchaseJobFinalize/" + JobID)