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 への更新のためにページを更新する必要があるのは正しいことです。これを行う 1 つの方法は、実際に作業自体を行うのではなく、リダイレクトするためだけに 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 に答える