2

私の ASP.NET MVC 3 アプリケーションには、 jQuery を介してトリガーされるアクションがありAJAX POST requestます。このアクションでは、いくつかの DB データを属性でチェックし、検証に合格した場合は、jQuery リクエストPartialViewのコールバックでビューの div 内に設定された結果を返します。success私がやりたいことは、検証に合格しない場合、ユーザーをアプリケーションの別のページに完全にリダイレクトすることです。

ビューに値を渡し、そこで追加のチェックを行うことで、Javascriptを介してこれを実行できることはわかっていますが、サーバー側で実行できるかどうかを知りたいです。

4

2 に答える 2

2

コントローラ アクションでは、リダイレクト先のコントローラ アクションを指すPartialViewまたは のいずれかを返すことができます。JsonResult

public ActionResult SomeAction()
{
    if (HasPassedValidation)
    {
         // everything went fine => let's return a partial view
         // that will be updated
         return PartialView();
    }

    // something went wrong with the validation => 
    // we return a JsonResult pointing to the controller
    // action we want to redirect to
    var result = new 
    { 
        redirectTo = Url.Action("SomeOtherAction", "SomeController") 
    };

    return Json(result, JsonRequestBehavior.AllowGet);
}

次に、AJAX 呼び出しテストの成功コールバック内で、それぞれの手順を実行します。

success: function(result) {
    if (result.redirectTo) {
        // the controller action returned a JSON result => there was an error
        // => let's redirect
        window.location.href = result.redirectTo;
    } else {
        // everything went fine => let's update the DOM with the partial
        $('#results').html(result);
    }
}
于 2012-09-24T13:26:36.867 に答える
1

MVC の AJAX フォーム コントロールは、完全なリダイレクトを行いません。ただし、HTML の場合はそうです。(ただし、非同期の動作が失われることを意味します)。

于 2012-09-24T13:27:17.487 に答える