Html.RenderPartial Works,但Html.RenderAction不工作(是空白),没有错误或异常

时间:2013-11-29 04:25:29

标签: asp.net-mvc-4 renderaction html.renderpartial

这是我正在尝试的

布局

<!DOCTYPE html>
<html lang="en">
 <head>
  <title>WebApp Name</title>
  <meta charset="utf-8" />
 </head>
 <body>
  <div id="menuContainer">
   @{Html.RenderPartial("~/Views/CustomPartials/_MainMenuPartial.cshtml");} @*Works*@
   @*@{Html.RenderAction("GetMenuStructure", "Custom");}*@ @*Not working*@
  </div>
  <div>
   @RenderBody()
  </div>
 </body>
</html>

控制器和操作方法

namespace Webappl.Controllers
{
 [Authorize]
 public class CustomController : Controller
 {
   [AllowAnonymous]
   [ChildActionOnly]
   public ActionResult GetMenuStructure()
   {
    return PartialView("~/Views/CustomPartials/_MainMenuPartial.cshtml");
   }
 }
}

_MainMenuPartial.cshtml

<ul id="ul_MainMenuStructure">
    <li><a href="#">Guest Pg1</a></li>
    <li><a href="#">Guest Pg2</a></li>
    <li><a href="#">Guest Pg3</a></li>
</ul>

问题是

@{Html.RenderPartial("~/Views/CustomPartials/_MainMenuPartial.cshtml");}

将_MainMenuPartial.cshtml的内容完美呈现在布局中。

虽然

@{Html.RenderAction("GetMenuStructure", "Custom");}

什么都不做。没有错误。没有例外。只是空白。如果我在

处设置断点
return PartialView("~/Views/CustomPartials/_MainMenuPartial.cshtml");

突破点正在受到打击。我按F5并且它向前移动没有任何错误/异常,但菜单结构不会在布局中呈现。我只有一个空白

<div id="menuContainer">
</div>

在我在浏览器中查看时在最终呈现的页面中。

我需要通过action方法来执行某些自定义逻辑。这就是为什么渲染部分是不够的。

我无法找到包含stackoverflow的任何地方的类似行为。这可能是糟糕的binging / google搜索技巧。

非常感谢一些帮助。现在就把我的头撞了三天。

1 个答案:

答案 0 :(得分:0)

我只是改变了

@Html.RenderAction("X", "Y")

@Html.Action("X", "Y")