RedirectToAction不重定向

时间:2011-08-06 07:22:31

标签: asp.net asp.net-mvc

点击按钮,它从.ascx开始。

<script type="text/javascript">

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

</script>

然后,这里的Controller是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时,它会命中所有代码,但不会重定向。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

Jquery不是魔法,它只是javascript的包装器。当您在服务器上执行重定向时,并不意味着您的浏览器(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");             
    }