2012-03-30 115 views
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); 
     } 
    }); 
}); 

我得到的问题是,当我尝试从控制器到重定向的页面,我重定向到被股利,而不是只是完全重定向内呈现。

控制器:

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

    return PartialView("view", model); 
} 

我需要能够完全重定向到另一个页面。

回答

1

您当前正在要求jQuery使用来自控制器的HTML响应填充$('#div1')。这不是你想要的。为什么你的控制器不会发送的URL而不是页面HTML?

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

您还包括一个额外的右括号,我已删除。

+0

这没有解决我的问题...我需要jQuery来填充我的div,但是在控制器中的一个条件后,我希望它INSTEAD重定向到另一个控制器/动作...我已经更新了该问题以提供更多信息控制器。 – Aaron 2012-03-30 05:55:07

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); 
     } 
    }); 
}); 

注意:我没有测试过这个。您可能需要使用它才能使其工作。此外,您可能需要将索引的返回类型更改为“对象”。

请让我知道结果。