Qual é a sua maneira de passar dados para a página mestra (usando ASP.NET MVC) sem quebrar as regras do MVC?
Pessoalmente, prefiro codificar controlador abstrato (controlador de base) ou classe base que é passada para todas as visualizações.
c#
.net
asp.net
asp.net-mvc
Łukasz Sowa
fonte
fonte
Respostas:
Se você preferir que suas visualizações tenham classes de dados de visualização fortemente tipadas, isso pode funcionar para você. Outras soluções são provavelmente mais corretas, mas este é um bom equilíbrio entre design e praticidade IMHO.
A página mestra tem uma classe de dados de visualização fortemente tipada contendo apenas informações relevantes a ela:
Cada visualização que usa essa página mestra tem uma classe de dados de visualização fortemente tipada contendo suas informações e derivando dos dados de visualização das páginas mestras:
Como não quero que os controladores individuais saibam nada sobre como reunir os dados das páginas mestras, encapsulo essa lógica em uma fábrica que é passada para cada controlador:
A herança corresponde bem ao relacionamento mestre para visualizar, mas quando se trata de renderizar parciais / controles de usuário, irei compor seus dados de visualização nos dados de visualização de páginas, por exemplo
Este é apenas um código de exemplo e não se destina a compilar como está. Projetado para ASP.Net MVC 1.0.
fonte
Eu prefiro quebrar as partes orientadas por dados da visualização mestre em parciais e renderizá-las usando Html.RenderAction . Isso tem várias vantagens distintas sobre a abordagem de herança de modelo de visão popular:
fonte
EDITAR
Erro genérico forneceu uma resposta melhor abaixo. Por favor, leia!
Resposta Original
A Microsoft publicou uma entrada sobre a maneira "oficial" de lidar com isso. Isso fornece um passo a passo com uma explicação de seu raciocínio.
Resumindo, eles recomendam o uso de uma classe de controlador abstrata, mas veja por si mesmo.
fonte
Controladores abstratos são uma boa ideia e não encontrei uma maneira melhor. Estou interessado em ver o que outras pessoas também fizeram.
fonte
Eu fiz algumas pesquisas e encontrei esses dois sites. Talvez eles pudessem ajudar.
ASP.NET MVC Dica # 31 - Passando dados para páginas mestras e controles de usuário
Passando dados para páginas mestras com ASP.NET MVC
fonte
Acho que um pai comum para todos os objetos de modelo que você passa para a visualização é excepcionalmente útil.
Sempre haverá a tendência de haver algumas propriedades de modelo comuns entre as páginas.
fonte
O objeto Request.Params é mutável. É muito fácil adicionar valores escalares a ele como parte do ciclo de processamento da solicitação. Do ponto de vista da visão, essas informações podem ter sido fornecidas no QueryString ou no FORM POST. hth
fonte
Acho que outra boa maneira poderia ser criar uma interface para visualização com alguma propriedade, como ParentView de alguma interface, para que você possa usá-la tanto para controles que precisam de uma referência à página (controle pai) quanto para visualizações principais que devem ser acessadas de Visualizações.
fonte
As outras soluções carecem de elegância e demoram muito. Peço desculpas por fazer essa coisa tão triste e empobrecida quase um ano inteiro depois:
Portanto, claramente tenho este método estático Get () em SiteMasterViewData que retorna SiteMasterViewData.
fonte