1

私のコントローラとは別のページにリダイレクトしようとしています。しかし私はページの一部を特定のdivにレンダリングする、私のページ上に動的な部分レンダリング設定を持っています。MVC Ajax部分レンダリングリダイレクト

$(document).ready(function() { 
    $.ajax({ 
     url: '<%=Url.Content("~/Area/Controller/Action")%>'; 
     success: function (data) { 
     $("#div1").html(data); 
     }, 
     error: function (data) { 
     $("#div1").html(data.responseText); 
     } 
    }); 
}); 

私は取得しています問題は、私は、コントローラからのリダイレクトしようとすると、ページがどの私は完全にリダイレクトするのではなく、divの内側にレンダリングされるようにリダイレクトすることです。

コントローラー:

public ActionResult Index() 
{ 
    if (condition...) 
     return RedirectToAction("Index", "Controller", new { Area = "Area" }); 

    return PartialView("view", model); 
} 

私は完全に別のページにリダイレクトできるようにする必要があります。

答えて

1

現在、コントローラーからのHTML応答で$('#div1')と記入するようにjQueryに依頼しています。これはあなたが望むものではありません。コントローラが、ページHTMLの代わりにというのURLを返信するのはなぜですか?

$.ajax({ 
    url: '<%=Url.Content("~/Area/Controller/Action")%>'; 
    success: function (data) { 
     window.location.href = data.url; 
    }, 
    error: function (data) { 
     $("#div1").html(data.responseText); 
    } 
}); 

あなたが削除した追加の閉じ括弧も含まれています。

+0

これは私の問題を解決しません...私は私のdivを埋めるためにjqueryが必要ですが、コントローラーの状態の後に、別のコントローラー/アクションにリダイレクトするのをINSTEADにしたいのです...詳細についての質問を更新しましたコントローラ。 – Aaron

0

ロジックをハックして機能させるだけです。

public ActionResult Index() 
{ 
    if (condition...) 
     return new {Status = 1, Content = <your URL to Redirect to>}; 

    return new {Status = 2, Content = PartialView("view", model)}; 
} 



$(document).ready(function() { 
    $.ajax({ 
     url: '<%=Url.Content("~/Area/Controller/Action")%>'; 
     success: function (data) { 
     if(data.d.Status = 1) 
      { 
      window.location.href = data.d.Content; 
      } 
     else 
      { 
      $("#div1").html(data.d.Content); 
      }    
     }, 
     error: function (data) { 
     $("#div1").html(data.responseText); 
     } 
    }); 
}); 

注:これはテストしていません。あなたはそれを動作させるためにそれを再生する必要があります。また、Indexの戻り値の型を 'object'に変更する必要があるかもしれません。

結果をお知らせください。

関連する問題