1
$.ajax({
    type: "POST",
    url: "Sample/Test",
    dataType: "html",
    async: false,
    success: function (resp) {
    }
})

コントローラーに Ajax 呼び出しを行い、コントローラーが部分ビュー(ActionResult)を返し、ページ内の特定の div の HTML を更新します。いいね。

コントローラーでエラーが発生した場合、Ajax 成功に返されるエラー ページが返されます。

ここに2つの問題があります

  1. 単純なシナリオでは、エラーページは部分的な Div に設定されています
  2. 一部のシナリオでは、動的に div id を見つけて、そのセクションだけを更新しています。エラーページはdivが未定義であるため、何も起こりません。

エラーの場合に部分的に更新するのではなく、エラー ページにリダイレクトするにはどうすればよいですか。

私も try catch を試してみましたが、Catch で部分ビューではなくビューを返しました。しかし、それはうまくいきませんでした。

以下のコードからもリダイレクトしてみました

protected void Application_Error(object sender, EventArgs e)
{
    Response.Redirect("~/Error/Error");
}

これにより、エラーページも ajax 成功に戻ります。

アプリケーションに複数の ajax 呼び出しがあるため、完全なエラー ページにリダイレクトする最良の方法は何ですか?

私が遭遇した他のアプローチは、成功のテキストを見つけてそこにリダイレクトすることです。それは良いアプローチですか?

複数の場所でajax呼び出しがあるため、その方法を実装する一般的な方法。

ありがとう

4

3 に答える 3

0
public ActionResult Index()
{
   try
     {
     }
   catch(Exception e)
   { 
    //handle error
    return new HttpStatusCodeResult(500);
   }    
return 
}


function UpdateTest() {
    $.ajax({
        url: '/Sample/Test',
        type: 'GET',
        data: { myVar: "@Model.MyVar" },
        success: function (result) {
            $("#partial-div").html(result);
        },
error: function() {
       document.location.href = '/error'; 
    }       
    });
}
于 2013-10-28T17:20:40.883 に答える
0

If 条件を使用してデータベースの値を確認し、エラーが発生した場合はカウントを取得してからビューに戻り、それ以外の場合は部分ビューに戻ります。

于 2013-10-28T11:02:11.660 に答える
0

AJAX が部分ビューを更新するコントローラー メソッドを呼び出している場合、次のようにする必要があります。

public PartialViewResult Test(string myVar)
{
    return PartialView("_MyPartialView", MyViewModel);
}

次に、部分ビューが含まれている div を更新するために ajax を取得する必要があります。

function UpdateTest() {
    $.ajax({
        url: '/Sample/Test',
        type: 'GET',
        data: { myVar: "@Model.MyVar" },
        success: function (result) {
            $("#partial-div").html(result);
        }
    });
}
于 2013-10-28T11:05:12.300 に答える