Html.RenderPartial Работает, но Html.RenderAction не работает (пусто) и нет ошибок или исключений
Вот что я пытаюсь
раскладка
<!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>
на последней странице при просмотре в браузере.
Мне нужно сделать это с помощью метода действия для выполнения определенной пользовательской логики. Вот почему частичное рендеринга недостаточно.
Я не смог найти аналогичное поведение, о котором сообщалось где-либо, включая stackru. Это могут быть плохие навыки игры в пинг / гугл.
Некоторая помощь будет очень цениться. Бьюсь головой об этом уже 3 дня.
1 ответ
Я просто поменяла
@Html.RenderAction("X", "Y")
к
@Html.Action("X", "Y")