Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Html.Action retorna StackOverflowException

Fui compilar o código da aula e meu Visual Studio retorna uma StackOverflowException. Não sei como corrigir esse problema.

Acontece na linha **@Html.Action("Index", "Menu")**. Segue o código completo da minha _Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <link href="~/Content/bootstrap/css/bootstrap.css" rel="stylesheet" />
    <link href="~/Content/Style.css" rel="stylesheet" />
</head>
<body>
    <div class="navbar navbar-fixed-top">
        <div class="navbar-inner">
            @Html.ActionLink("Loja Razor", "Index", "Home", null, new { @class = "brand" })
            <ul class="nav">
                <li>@Html.ActionLink("Sobre", "About", "Home")</li>
                <li>@Html.ActionLink("Contato", "Contato", "Home")</li>
            </ul>
            <p class="navbar-text pull-right">
                @if (Session["usuarioLogado"] != null)
                {
                    @: Bem-Vindo
                    @Session["usuarioLogado"]
                    @Html.ActionLink("Logout", "Logout", "Autenticacao")
                }
                else
                {
                    @: Olá Visitante,
                    @Html.ActionLink("Login", "Index", "Login")
                    @: ou
                    @Html.ActionLink("Cadastre-se", "Form", "Usuarios")
                }
            </p>
        </div>
    </div>
    <div class="span3">
        <!-- menu -->
        @Html.Action("Index", "Menu")
    </div>
    <div class="span9">
        @RenderBody()
    </div>
</body>
</html>
4 respostas

Olá, Olivia, tudo bem?

Suspeito que o método da action Index no MenuController esteja fazendo um loop infinito. Você pode postar o código aqui para darmos uma olhada?

Obrigado!

Oi Marcelo! Obrigada pela resposta e desculpe a demora para responder.

Segue o código do MenuController. Não consegui enxergar nenhum loop infinito ):

namespace LojaRazor.Controllers
{
    public class MenuController : Controller
    {
        public ActionResult Index()
        {
            DepartamentosDAO dao = new DepartamentosDAO();
            ViewBag.Departamentos = dao.Lista();
            return View();
        }
    }
}
solução!

Boa noite,

Teria como você enviar o código da View do Index.cshtml do MenuController?

No caso, na view Index.cshtml, você está indicando que não é para usar nenhum layout?

@{
    Layout = "";
}

talvez esse seja o problema, porque se não indicar que não é para ter layout, ele vai carregar o _layout.cshtml, que vai chamar o menu, que vai chamar o layout, e assim vai. . . .rs

espero que tenha ajudado abraço

Bom dia!

Segue o código da View Index.cshtml da pasta Menu:

<div class="sidebar-nav well">
    <ul>
        @foreach (var departamento in ViewBag.Departamentos)
        {
            <li class="nav-header">@departamento.Nome</li>
            foreach (var categoria in departamento.Categorias)
            {
                <li>@categoria.Nome</li>
            }
        }
    </ul>
</div>

Tentei colocar o que você sugeriu e deu outro erro, dessa vez relacionado ao _MenuSuperior. Ainda não consegui investigá-lo:

error CS1525: Termo de expressão inválido ','' na linha

@Html.Partial("_MenuSuperior")