Pergunta

Eu tenho um projeto Hybrid ASP.NET WebForms/MVC. Na minha página mestre, tenho um controle de usuário "menu" e um controle de usuário do "rodapé". De qualquer forma. Preciso passar alguns dados (2 strings) para o meu controle de usuário "menu" na minha página mestre (para selecionar a guia atual na minha navegação de menu, etc.) Minhas visualizações são fortemente timbadas para o meu modelo de dados. Como posso empurrar dados do meu controlador para o meu menu ou pelo menos permitir que minha página mestre acesse alguns dados predefinidos no meu controlador?

Nota: Entendo que isso viola o ASP.NET MVC puro, mas, como eu disse, é um projeto híbrido. O principal objetivo da minha introdução ao ASP.NET MVC em meu projeto era ter mais controle sobre minha interface do usuário apenas para determinadas situações.

Foi útil?

Solução

Coloque suas cordas na coleção ViewData,

ViewData["MenuString1"] = "My First String";
ViewData["MenuString2"] = "My Second String";

e recuperá -los na página mestre como esta:

myMenu.Property1 = ViewData["MenuString1"].ToString();
myMenu.Property2 = ViewData["MenuString2"].ToString();

http://nerddinnerbook.s3.amazonaws.com/part6.htm

Outras dicas

Você pode usar o ViewData para compartilhar dados entre o controlador e a visualização que não estão no modelo. No controlador, faça algo como ViewData["menu"] = myMenu; E então, na vista <%= ViewData["menu"] %>. Você pode passar objetos, mas precisa lançar o ViewData [chave] de volta ao tipo de objeto na exibição.

Outra maneira de fazer isso é colocar seus menus e outras necessidades de dados não relacionadas ao modelo em um controlador separado. Em seguida, você pode usar o RenderAction para chamar a ação em seu controlador de navegação que gera o menu. Hack tem um post no renderização que explica isso com mais detalhes.

Eu me inclino para usar o ViewData para valores temporários do controlador, como listas de seleção e uma renderização para coisas não relacionadas, como a navegação principal do site.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top