none
Partial View / Layout Page / Razor RRS feed

  • Pergunta

  • Pessoal,

    Eu tenho uma página do tipo (Page Layout) que vai funcionar como uma master-page para meu projeto.

    Dentro eu tenho o seguinte código:

            <div>

                @Html.Partial("_MenuInferior");

            </div>

    Porém essa view acessa um model diferente de outras páginas, veja o código:

    @model List<Projeto.Models.MenuInferiorModel>      

    @foreach (var item in Model)

    {

        @Html.DisplayFor(modelItem => item.Titulo)

    }

    Esse código não funciona, pois a mensagem afirma que o @foreach é null, ou seja não tem dados para percorrer.

    Na minha controller eu tenho o código abaixo:

     public class MenuInferiorController : Controller

        {

            private ContextModel db = new ContextModel();

            public ViewResult Index()

            {

                return View(db.MenuInferiorModels.ToList());

            }

    }

    Esse model funciona, pois na view INDEX gerada no CRUD está exibindo sem problemas.

     

    O que estou fazendo de errado ???

     

    ______________________________________

     

    Depois vem o segundo problema,  as outras páginas passaram a dar erro pois aparentemente existe um conflito entre a declaração @model List<Advus.Elektro.Midia.Models.MenuInferiorModel> feita no início da página.

     

    Podem me ajudar ?


    Douglas
    quinta-feira, 22 de setembro de 2011 19:21

Todas as Respostas

  • Douglas,

    Uma sugestão que posso te dar é criar um helper, para ser usado em sua master page. Crie uma pasta App_Code no seu projeto, adicione uma partial view chamada MyHelpers ou outro nome qualquer, dentro do arquivo você adiciona sua lógica:

     

    @helper MenuInferior(List<Projeto.Models.MenuInferiorModel menuInferior)

    {    

          foreach (var item in menuInferior)

          {

              @Html.DisplayFor(modelItem => item.Titulo)

          }

    }

    Na sua master page você chama como chamaria um helper qualquer do Framework.

    @MyHelpers.MenuInferior(ViewData.MenuInferior)

    Espero ter ajudado.


    Atenciosamente, Paulo R. Pereira de Souza
    http://paulosouza.net
    E-mail: paulorpereirasouza@hotmail.com. twitter facebook linkedin
    sexta-feira, 23 de setembro de 2011 12:45
  • Cara, estou exatamente com o mesmo problema que você, e não encontro nenhuma solução.

    Você conseguiu resolver o problema? Como?

    Grande abraço

    quarta-feira, 28 de setembro de 2011 00:46
  • Leonardo,

    Ainda não descobri como fazer, mas assim que descobrir posto aqui no forum.

    Abraço


    Douglas
    quarta-feira, 28 de setembro de 2011 03:01
  • tem um overload do Html.Partial que recebe o model como parametro...

     

    Html.Partial("_MenuInferior", model)

     

    Bruno

    quarta-feira, 28 de setembro de 2011 20:41
  • Douglas, Consegui descobrir uma forma bem elegante de se fazer isso. Primeiro a action do seu controller precisa retornar uma PartialView. Depois la no seu _Layout você pode renderizar utiliando o comando:

    @RenderAction("Acao","Controller")

     

    Aqui funcionou bem, acredito que resolva pra você também! Qualquer coisa só postar que a gente arruma uma forma de resolver ;P Grande Abraço!

    • Editado leomachado quinta-feira, 29 de setembro de 2011 12:33
    quinta-feira, 29 de setembro de 2011 12:32
  • Posta seu código pois para mim tá dando erro de conversão.

    Abraço

     


    Douglas
    quinta-feira, 29 de setembro de 2011 16:51
  • Posto sim...

    No momento estou no trabalho e o código em casa, mas assim que chegar eu edito o post e coloco o código.

    Mas pra te adiantar... o erro de conversão está sendo na compilação?

    Se for pode ser aqui:

    public PartialViewResult Index()

    {

    return PartialView(db.MenuInferiorModels.ToList());

    }

    Verifica se alterou o tipo de retorno do método também.

    quinta-feira, 29 de setembro de 2011 18:45