从一个控制器视图到另一个控制器视图的ASP.NET MVC 3 Razor渲染部分视图

问题描述:

什么是在不刷新主页面的情况下从部分视图重定向到另一个局部视图的最佳方式。因此,1个局部视图在点击按钮后变成另一个局部视图。你可以用jQuery做到这一点,还是有更好的方法来执行此操作? 此外,你需要通过一个ID从一个控制器视图到另一个控制器视图的ASP.NET MVC 3 Razor渲染部分视图

AJAX似乎是在这种情况下一个很好的解决方案。所以,你可以某处在页面上放置一个按钮:

@Html.ActionLink(
    "link text", 
    "someAction", 
    "someController", 
    new { id = "put here some id you want to send to server" }, 
    new { id = "myLink" } 
) 

<div id="partial2Div"></div> 

,然后悄悄地AJAXify这个链接在一个单独的JavaScript文件:

$(function() { 
    $('#myLink').click(function() { 
     $('#partial2Div').load(this.href); 
     return false; 
    }); 
}); 

控制器动作将直接返回相应的局部视图:

public ActionResult SomeAction(string id) 
{ 
    var model = ... 
    return PartialView(model); 
} 
+0

如果我删除返回false,他显示新的部分视图给出一个全新的页面。如果我使用返回false(如你的例子),没有任何反应 – Thomas 2011-04-14 08:38:28

+0

@Thomas,你可以检查FireBug中的AJAX请求。您将看到控制器操作是否已命中并返回。 – 2011-04-14 08:48:51

Ajax.ActionLink将为您开箱即用,无需额外编写JavaScript代码。

@Ajax.ActionLink("Link Text","Action","Controller",new {id= myId},new AjaxOptions{InsertionMode=InsertionMode.Replace, HttpMethod="get", UpdateTargetId="target-location-id"}) 
+0

当我点击actionlink时,一个新的页面呈现。局部视图必须改变页面,而不是父页面。 – Thomas 2011-04-14 09:26:02

+0

您是否包含了所需的JavaScript文件:jquery, MicrosoftAjax.js和MicrosoftMvcAjax.js? – 2011-04-14 09:27:29

+0

是的,我把它放在我的父页面上,但它仍然给我一个新的页面(即使方法是类型PartialViewResult,而不是ActionResult) – Thomas 2011-04-14 09:31:23