这是我正在尝试的
布局
<!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搜索技巧。
非常感谢一些帮助。现在就把我的头撞了三天。
答案 0 :(得分:0)
我只是改变了
@Html.RenderAction("X", "Y")
要
@Html.Action("X", "Y")