阻止MVC4 Ajax ActionLink在New Tab或Window中打开

时间:2013-10-14 11:26:01

标签: jquery ajax asp.net-mvc-4

我正在使用MVC4 Ajax.ActionLink来绑定或更新部分视图

 @Ajax.ActionLink("Link","Action","Controller" , new {id = @Id}, new AjaxOptions { HttpMethod="Post",UpdateTargetId="dvUpdateId", OnSuccess = "scsFunctions"})

现在的问题是,如果我尝试通过右键单击“新建标签”或“新建Windows”中的“打开”链接来打开链接,而不是我有以下两个问题。

(1)在新标签页或新窗口中,只返回部分视图。所以Page的其他部分就消失了。

(2)它永远不会调用Onsuccess函数和其他函数一样。在上面的代码OnSuccess中,我们定义调用“scsFunctions”,它永远不会调用。所以我们在函数内部编写的脚本永远不会执行。

帮助我找到合适的解决方案......

1 个答案:

答案 0 :(得分:2)

我已经解决了这个问题。首先检查是否是AjaxRequest或ChildAction。如果是,则返回PartialView,如果没有返回redirectResult

public ActionResult Index(int param1, bool param2)
        {

            if (HttpContext.Request.IsAjaxRequest() || ControllerContext.IsChildAction)
            {
                return PartialView("Controls/_SingolaGallery", param1);
            }
            return new RedirectResult("http://www.myredirectUrl.com");//you can redirect in this another way--> new RedirectResult(Url.Action("ActinNAme","ControllerName")); 

          }