2011-08-06 30 views
1

ここはボタンクリックで.ascxで始まります。リダイレクトされないリダイレクト先

<script type="text/javascript"> 

function acceptG(id) { 
    jQuery.get('<%: Url.Action("Accept", "Gift") %>', { id: id }); 
} 

</script> 

次に、ここでRedirectToActionがどこにあるコントローラーは次のとおりです。ここで

[Authorize] 
    public ActionResult Accept(long id) 
    { 
     var result = _gtService.AcceptG(id, User.UserID); 
     if (result.Success) 
      return RedirectToAction("Index", "Magnets"); 
     else 
     return View("InvalidG");    
    } 

メニューを使用して、このインデックスを打ったときに覚えておくべき指数

public ActionResult Index() 
    { 
     ViewData["Count"] = _souvenirService.GetDataForUser(User.UserID).Count(); 
     return View(); 
    } 

一つのことがあるありますページが正常に表示されるため、正常に動作します。しかし、RedirectToActionを使用すると、すべてのコードをヒットしますが、リダイレクトはしません。どんな助けもありがとうございます。

答えて

3

Jqueryはマジックではありません、そのジャバスクリプトのラッパーです。サーバー上でリダイレクトを行うと、あなたのブラウザ(ajax-request)が自動的にあなたがすることを理解することを意味するものではありません。リダイレクトしたいとブラウザに指示する必要があります。私はあなたの必要性のために非常に小さいシステムを作成しましたが、アプリケーションの要件ごとに複雑なシステムを作成することができます。

<script type="text/javascript"> 

function acceptG(id) { 
    jQuery.ajax({ 
      url:'<%: Url.Action("Accept", "Gift") %>', 
      data:{ id: id }, 
      success:function(data) 
      { 
       if(data=='Redirect') 
       { 
        window.location='<%: Url.Action("Index", "Magnets") %>'; 
       } 
       else 
       { 
        //do something else 
       } 
      } 
    }); 
} 

</script> 



[Authorize] 
    public ActionResult Accept(long id) 
    { 
     var result = _gtService.AcceptG(id, User.UserID); 
     if (result.Success) 
      if(Request.IsAjaxRequest()) 
      { 
        return Content('Redirect') 
      } 
      return RedirectToAction("Index", "Magnets"); 
     else 
     return View("InvalidG");    
    } 
関連する問題