1

我正在处理一个 asp.net mvc 页面,在该页面上我将一个字符串传递给控制器​​ post 方法以获取记录并填充视图。但是使用我的代码,我的视图模型通过 ajax 调用获得了正确的记录,但视图具有相同的旧记录数。我认为我们必须在 jquery ajax 调用之后再次刷新它。您能否就此提出一些想法。以下是我尝试过的。如果不符合标准,请随时建议代码更改。

$.ajax({
    type: "POST",
    url: "/Default/MyProjects",
    data: { 'QuerySeperated':  querySeperated  },
    success: function (result) {
        //location.reload();
    },
    error: function (result) {

    }
});



[HttpGet]
public virtual ActionResult MyProjects(int? id, string QuerySeperated)
{
    var dataAccessHelper = new DataAccessHelper(true);
    IList<test> myProjects;
    if (QuerySeperated == null)
    {
        myProjects = dataAccessHelper.GetMyProjects(id);
    }
    else
    {
        myProjects = dataAccessHelper.GetMyProjects(id).Take(2).ToList();
    }
    var myProjectsViewModel = new MyProjectsViewModel() { GetMyProjects = myProjects };
    return View(myProjectsViewModel);
}

[HttpPost]
public virtual ActionResult MyProjects(int? id, string QuerySeperated, string m)
{
    var dataAccessHelper = new DataAccessHelper(true);
    IList<test> myProjects = dataAccessHelper.GetMyProjects(id).Where(p => p.Title == "New Project").ToList();
    var myProjectsViewModel = new MyProjectsViewModel() { GetMyProjects = myProjects };

    return RedirectToAction("MyProjects", new { QuerySeperated });
}
4

1 回答 1

3

没错,您必须刷新页面才能更新到 webgrid。这样做的一种方法是使用 ajax 来重定向而不是实际执行工作本身。将您的操作方法更改为如下所示:

[HttpPost]
public ActionResult MyProjects(int? id, string QuerySeperated, string m)
{
    var redirectUrl = new UrlHelper(Request.RequestContext).Action("MyProjects", "ControllerName", new { QuerySeperated });
    return Json(new { Url = redirectUrl });
}

这只会返回 get 方法的 url。您需要对此进行更改,以便它也将参数考虑在内。然后将您的 ajax 调用更改为:

$.ajax({ type: "POST",
         url: "/Default/MyProjects",
         data: { 'QuerySeperated':  querySeperated  },
           success: function (response) {
               window.location.href = response.Url;
           },
           error: function () {
           }
  });
于 2013-12-27T08:33:48.233 回答