0

私はajaxで電話しますNameController\Action

このアクションでは、私は戻りますActionResult-aView(model)

クライアントを返されたビューにリダイレクトする方法はありますか?

現在、このビューはフィデラーでのみ表示されます(返されたコンテンツとして)

4

1 に答える 1

0

クライアントを返されたビューにリダイレクトする方法はありますか?

もちろんですが、なぜこの場合に AJAX を使用しているのですか? AJAX の要点は、同じページにとどまり、HTML 全体をリロードしないようにすることです。

しかし、あなたが望むなら、それを達成することができます。たとえば、コントローラー アクションで、リダイレクト先のターゲット URL を含む JSON 結果を条件付きで返すようにすることができます。次に、AJAX 呼び出しの成功コールバック内で を使用しwindow.location.hrefて、クライアントでリダイレクトを実行します。

例を挙げましょう:

[HttpPost]
public ActionResult MyAction()
{
    if (SomeCondition)
    {
        return PartialView(model);
    }
    return Json(new { redirectTo = Url.Action("TargetAction", "TargetController") });
}

そして、AJAX 成功コールバック内で:

success: function(result) {
    if (result.redirectTo) {
        // the server returned a JSON result => let's redirect to the target url
        window.location.href = result.redirectTo;
    } else {
        // The server returned a partial view => let's update some portion of the DOM
        $('#result').html(result);
    }
}
于 2013-01-21T14:16:29.227 に答える