Asp.Net MVC - Usuário mudando o layout

355 views
Skip to first unread message

Ricardo Rocha

unread,
May 13, 2009, 8:29:43 AM5/13/09
to dotnetar...@googlegroups.com
Pessoal,
 
     Estava pensando numa implementação e queria saber da experiência que vcs tiveram com o assunto.
     O site terá temas em que o usuário mudará as cores/figuras do site e isso funciona tranquilamente. Mas também gostaria de oferecer a possibilidade dele utilizar alguns layouts diferentes. Neste caso penso em fazer outras MasterPages com as possibilidades de layout e depois mudar a MasterPage da página dinamicamente.
 
     Acredito que para ter esta informação sempre, seria necessário gravar este dado em banco e ao logar aplicar a MasterPage nas páginas abertas.
 
     Vcs já fizeram algo neste sentido ??? Há algum problema com performance ou coisas similares ???
 
Grato
 
Ricardo Rocha

Juliano Oliveira

unread,
May 13, 2009, 8:39:49 AM5/13/09
to dotnetar...@googlegroups.com
Ricardo,

Depende. O que você pretende mudar no layout?

Não sei se tu conhece o "Zen garden"
http://www.csszengarden.com/tr/portuguese/

Com apenas um HTML você pode mudar todo o site apenas com CSS. Depende de como você elabora o projeto. O link que eu passei acima pode ter todas essas aparencias. Veja:
http://www.csszengarden.com/tr/portuguese/?cssfile=/213/213.css&page=0
http://www.csszengarden.com/tr/portuguese/?cssfile=/212/212.css&page=0
http://www.csszengarden.com/tr/portuguese/?cssfile=/210/210.css&page=0
http://www.csszengarden.com/tr/portuguese/?cssfile=/209/209.css&page=0
http://www.csszengarden.com/tr/portuguese/?cssfile=/207/207.css&page=0
http://www.csszengarden.com/tr/portuguese/?cssfile=/206/206.css&page=0

Não foi necessário diversas "Masterpage". Apenas um HTML e você modifica apenas o estilo.
Veja que o HTML de todos esses "templates" é o mesmo:
http://www.csszengarden.com/zengarden-sample.html

Isso é o que você precisa?

[]´s

Juliano Oliveira
Analista Desenvolvedor
.Net, C#, Actionscript, Flex, NHibernate
http://programandoem.net


2009/5/13 Ricardo Rocha <ricardor...@gmail.com>

Juliano Oliveira

unread,
May 13, 2009, 8:48:20 AM5/13/09
to dotnetar...@googlegroups.com
Esse assunto entra no que o ASP.NET MVC é bem melhor. Controle do HTML.
Não pense em "reinventar a roda" com MasterPages.
CSS é o caminho. Basta um bom planejamento no seu HTML, alguns arquivos CSS e uma lógica de "qual CSS carregar".

É a "arquitetura da apresentação"!


[]´s

Juliano Oliveira
Analista Desenvolvedor
.Net, C#, Actionscript, Flex, NHibernate
http://programandoem.net


2009/5/13 Juliano Oliveira <jul.ol...@gmail.com>

Ricardo Rocha

unread,
May 13, 2009, 8:49:04 AM5/13/09
to dotnetar...@googlegroups.com
Juliano,
 
    Aqui na empresa não tenho acesso a internet, (só consigo acessar o msdn  :p ) ... a noite verei direito. Mas pelo que entendi é possível mudar os css que serão carregados via parâmetro de querystring  .... os Temas fazem isso ... ao setar um tema, ele pega os css que estão na respectiva pasta e aplica.
 
   Eu havia pensado em mais de uma MasterPage porque em alguns modelos eu poderia não exibir uma parte do site (serão diversos módulos) ... assim, ao invés de carregar numa div invisível e ter html desnecessário onerando, eu não carregaria e teria melhora de performance.
   Outra opção para isso seria utilizar  o tema e uma parte de configuração que grava as opções no profile, daí eu leria as informações na MasterPage e incluiria ou não o html ... talvez assim eu tenha o melhor resultado com menos lugares para alterações.
 
 
[]'s
 
Ricardo Rocha


 
2009/5/13 Juliano Oliveira <jul.ol...@gmail.com>

Rodrigo Braga

unread,
May 13, 2009, 8:56:04 AM5/13/09
to dotnetar...@googlegroups.com
Aparentemente CSS é a melhor opção realmente, é como dizem...

html : marcação
js : comportamento
css : apresentação

Ao menos teóricamente uma solução muito elegante seria justamente
isso, você gera todo o seu conteúdo com as devidas marcações (tags
html) e no CSS você defini posições, cores imagens e afins.

Mas acredito que não seja tão simples para quem não "domina a arte"
(como eu por exemplo) deixar tudo "compenitizado" a ponto de apenas
com CSS você dar literalmente outra cara ao site, um detalhe em
relação à isso é o seguinte, quantos sites conseguimos enumerar que
usam técnicas como a do CSS Zen Garden?

2009/5/13 Ricardo Rocha <ricardor...@gmail.com>:
--
Att.,
Rodrigo Braga

Juliano Oliveira

unread,
May 13, 2009, 8:57:23 AM5/13/09
to dotnetar...@googlegroups.com
Ricardo,

Recomendo você utilizar MasterPage apenas quando a diagramação mudar para uma diagramação completamente diferente.
por exemplo, de um template 3 colunas para um 2 colunas e mesmo assim não há muita necessidade.

Depende do que você pretende "customizar"

Você pode por exemplo, ter apenas uma MasterPage e o CSS mudando o estilo, imagens, logo... etc.
E dentro dessas páginas, habilitar ou não a criação de "partes" do site com RenderPartial.

Com uma MasterPage para cada "template" você não será produtivo. Você terá que a cada template criar um novo HTML. Sendo que talvez você necessite apenas mudar como esse HTML é exibido.

Depende do projeto.

Juliano Oliveira

unread,
May 13, 2009, 9:02:18 AM5/13/09
to dotnetar...@googlegroups.com
Rodrigo,

Concordo, porém, sobre o comentário:

"acredito que não seja tão simples para quem não "domina a arte""

Isso vale para qualquer coisa. Imagine alguém querendo aprender DDD sem "dominar a arte" do OO. Isso é meio implícito.
Eu até ia comentar recomendando um cara bom em HTML e CSS para o projeto, mas nem falei pois é meio óbvio.

Abram o site do Zen garden e abram o código fonte do HTML. Ele é full tableless.

No momento estou desenvolvendo um projeto que usa essas técnicas. É bem legal usar, aprender e se surpreender com o poder do CSS.


[]´s

Juliano Oliveira
Analista Desenvolvedor
.Net, C#, Actionscript, Flex, NHibernate
http://programandoem.net


2009/5/13 Juliano Oliveira <jul.ol...@gmail.com>

Daniel Queiroz

unread,
May 13, 2009, 9:03:09 AM5/13/09
to dotnetar...@googlegroups.com
Hehehehe....eu vejo os caras metendo o pau e certas coisas...

Falaram aqui: Masterpage é reinventar a roda! Cacilda becker! Como assim? o Esquema facilita a vida demais! DEMAIS!

Vocês conhecem o Blogdotnetengine? Ele trabalha com Masterpages...e é simples...e prático...

Implementei ele algumas vezes e resolve 95% dos problemas que temos! Só saber usar!
--
"Em 6 dias Deus criou o universo com a aparência de bilhões de anos de existência. OU será que Adão foi criado sendo um bebezinho?
Se um homem pode ser criado adulto, o universo também pode..."

Daniel Queiroz

unread,
May 13, 2009, 9:04:04 AM5/13/09
to dotnetar...@googlegroups.com
E porque não usar os dois mundos? CSS e Mastepages?

Nos projetos que faço uso...é fica bão demais.

2009/5/13 Juliano Oliveira <jul.ol...@gmail.com>

Juliano Oliveira

unread,
May 13, 2009, 9:04:26 AM5/13/09
to dotnetar...@googlegroups.com
Opa lá cara-palida!

Eu disse: "Masterpage é reinventar a roda" NESSE CONTEXTO QUE ELE QUER USAR!


[]´s

Juliano Oliveira
Analista Desenvolvedor
.Net, C#, Actionscript, Flex, NHibernate
http://programandoem.net


2009/5/13 Daniel Queiroz <dani...@gmail.com>

Ricardo Rocha

unread,
May 13, 2009, 9:06:12 AM5/13/09
to dotnetar...@googlegroups.com
        Vc tem razão, com certeza há melhor produtividade e até mesmo segurança nas alterações, se for apenas uma MasterPage. Já utilizo RenderPartial para algumas coisas. Irei avaliar melhor as opções que oferecerei ao usuário e então criar novos css de layout.
 
       Como o Rodrigo disse estas coisas de ficar tudo no css é complexo para quem não domina esta arte (eu estou neste grupo), mas há boas ferramentas que auxiliam bastante nesta tarefa e sempre há o Google para auxiliar ... heheheeh.
 
       Ainda estou amadurecendo a questão sobre a implementação que falei e o interesse era justamente trocar uma idéia antes de fazer algo que nunca fiz. Melhor conversar com quem tem experiências e opiniões a dar e fazer algo mais sensato do que simplesmente fazer por achar que é o melhor e depois ter que mudar porque o resultado não foi o esperado !!
 
 
Obrigado !!

Daniel Queiroz

unread,
May 13, 2009, 9:06:32 AM5/13/09
to dotnetar...@googlegroups.com
Haehaehea...

Mas no exemplo que dei do blog...ele trabalha com Skin,Themes e Masterpage...por isto que disse que ele pode ir por este caminho...e não vai deixar de usar CSS tb...

2009/5/13 Juliano Oliveira <jul.ol...@gmail.com>

Rodrigo Braga

unread,
May 13, 2009, 9:09:07 AM5/13/09
to dotnetar...@googlegroups.com
Juliano

Justamente... dia desses rolou um debate aí sobre até onde o
desenvolvedor deveria conhecer de html+js+css

Em relação a "dominar a arte" eu me referia em relação a profundidade,
mesmo sem ser expert nestes três recursos é possível realizar
trabalhos padronizados, elegantes e com produtividade; porém
provavelmente só alguém de fato versado na arte será capaz de produzir
com tamanha qualidade algo assim.

Até pq entra também nos cálculos os prazos, experimentar recursos em
projetos com prazos (ainda que longos) pode não ser uma experiência
salutar e talvez o ideal seja pedir a ajuda de um guru mesmo, se uma
das premissas do projeto for essa (que o projeto alcance o estado da
arte em HTML+JS+CSS :)

2009/5/13 Juliano Oliveira <jul.ol...@gmail.com>:
--
Att.,
Rodrigo Braga

Juliano Oliveira

unread,
May 13, 2009, 9:09:35 AM5/13/09
to dotnetar...@googlegroups.com
Daniel,

Foi o que eu disse!

Mas a proposta inicial do Ricardo era criar uma masterpage para cada template e ainda ter que criar uma lógica para aplicar diferentes masterpages para cada cliente. MasterPage não é para isso. Para isso se usa CSS sobre uma MasterPage.

Eu uso MasterPages, mas para o que ela é proposta.
Se a cada layout você usar uma MasterPage nova, você estará usando ela da forma errada.


[]´s

Juliano Oliveira
Analista Desenvolvedor
.Net, C#, Actionscript, Flex, NHibernate
http://programandoem.net


2009/5/13 Daniel Queiroz <dani...@gmail.com>

Juliano Oliveira

unread,
May 13, 2009, 9:12:12 AM5/13/09
to dotnetar...@googlegroups.com
Rodrigo,

Concordo.
Acho que poucos aqui estão habilitados para falarem sobre HTML++ (como eu chamo html + js + css)

Ricardo,

Se precisar bons profissionais em HTML++ e SEO eu conheço um.


[]´s

Juliano Oliveira
Analista Desenvolvedor
.Net, C#, Actionscript, Flex, NHibernate
http://programandoem.net


2009/5/13 Rodrigo Braga <rbr...@gmail.com>

Daniel Queiroz

unread,
May 13, 2009, 9:12:33 AM5/13/09
to dotnetar...@googlegroups.com
Verdade...
Apesar do caso que citei...ele trabalhar assim.
Mas talvez um pouco diferente...pois cada skin tem sua masterpage....vc já viu como funciona?

2009/5/13 Juliano Oliveira <jul.ol...@gmail.com>

Juliano Oliveira

unread,
May 13, 2009, 9:17:18 AM5/13/09
to dotnetar...@googlegroups.com
Você está se refere a templates do Blogengine?

Daniel Queiroz

unread,
May 13, 2009, 9:18:28 AM5/13/09
to dotnetar...@googlegroups.com
Sim...

2009/5/13 Juliano Oliveira <jul.ol...@gmail.com>

Juliano Oliveira

unread,
May 13, 2009, 9:26:40 AM5/13/09
to dotnetar...@googlegroups.com
Não conheço o Blogengine. Talvez essa caracteristica seja devido a arquitetura do engine. Não posso falar sobre.

No caso do Ricardo, ficar criando MasterPages possa ser desnecessário. Depende do que ele quer.

Por exemplo.
Se um Html com 3 colunas, topo e rodapé for suficiente para todos os clientes ele não terá a necessidade de criar diversas MasterPage, ele pode mudar apenas o estilo. Como visto no Zen Gardem, apenas com CSS e o mesmo HTML ele pode fazer sites COMPLETAMENTE DIFERENTES.

Nesse caso, de cada cliente ter "objetos" de apresentação diferentes na tela para cada cliente, ele pode ir "adicionando" MVC Usercontrols nas Views com RenderPartial e o CSS principal do template "regularia" como esses "objetos de apresentação" seriam dispostos no layout.

Em um primeiro momento, a primeira idéia que me surge seria controlar por CSS pois é mais simples e mais produtivo.

Victor Cavalcante

unread,
May 13, 2009, 10:55:57 AM5/13/09
to dotnetar...@googlegroups.com
Juliano,

Assinou em baixo.

Victor Cavalcante

via celular

----- Mensagem Original -----
De: "Juliano Oliveira" <jul.ol...@gmail.com>
Para: dotnetar...@googlegroups.com
Enviada: 13/5/2009 09:39
Assunto: [dotnetarchitects] Re: Asp.Net MVC - Usuário mudando o layout

Anderson Correia

unread,
May 13, 2009, 11:16:08 AM5/13/09
to .Net Architects
Caro Ricardo,

Utilizando WebForms você pode utilizar temas com .skin para os
controles e adicionar temas do tipo StyleSheetTheme para gerenciar o
layout. Os temas podem ser configurados no web.config ou na própria
diretiva @Page de uma página.
Portanto o caminho é com CSS, e não com "N" MasterPages.

[]'s

Anderson Correia.


On May 13, 11:55 am, Victor Cavalcante <vic...@cavalcante.net> wrote:
> Juliano,
>
> Assinou em baixo.
>
> Victor Cavalcante
>
> via celular
>
> ----- Mensagem Original -----
> De: "Juliano Oliveira" <jul.olive...@gmail.com>
> Para: dotnetar...@googlegroups.com
> Enviada: 13/5/2009 09:39
> Assunto: [dotnetarchitects] Re: Asp.Net MVC - Usuário mudando  o layout
>
> Ricardo,
>
> Depende. O que você pretende mudar no layout?
>
> Não sei se tu conhece o "Zen garden"http://www.csszengarden.com/tr/portuguese/
>
> Com apenas um HTML você pode mudar todo o site apenas com CSS. Depende de
> como você elabora o projeto. O link que eu passei acima pode ter todas essas
> aparencias. Veja:http://www.csszengarden.com/tr/portuguese/?cssfile=/213/213.css&page=0http://www.csszengarden.com/tr/portuguese/?cssfile=/212/212.css&page=0http://www.csszengarden.com/tr/portuguese/?cssfile=/210/210.css&page=0http://www.csszengarden.com/tr/portuguese/?cssfile=/209/209.css&page=0http://www.csszengarden.com/tr/portuguese/?cssfile=/207/207.css&page=0http://www.csszengarden.com/tr/portuguese/?cssfile=/206/206.css&page=0
>
> Não foi necessário diversas "Masterpage". Apenas um HTML e você modifica
> apenas o estilo.
> Veja que o HTML de todos esses "templates" é o mesmo:http://www.csszengarden.com/zengarden-sample.html
>
> Isso é o que você precisa?
>
> []´s
>
> Juliano Oliveira
> Analista Desenvolvedor
> .Net, C#, Actionscript, Flex, NHibernatehttp://programandoem.net
>
> 2009/5/13 Ricardo Rocha <ricardorocha....@gmail.com>

Rodrigo Braga

unread,
May 13, 2009, 11:28:13 AM5/13/09
to dotnetar...@googlegroups.com
[humor]

Está demorando para alguém falar algo como "em RoR é muito fácil,
basta usar o 'ActiveLayout' ..."

:)

[/humor]

2009/5/13 Anderson Correia <info.c...@gmail.com>:
--
Att.,
Rodrigo Braga

Juliano Oliveira

unread,
May 13, 2009, 11:44:52 AM5/13/09
to dotnetar...@googlegroups.com
Ninguém falou poís o titulo da thread é ASP.NET MVC.

Mas realmente o RoR faz esse trabalho facinho. kkk


[]´s

Juliano Oliveira
Analista Desenvolvedor
.Net, C#, Actionscript, Flex, NHibernate
http://programandoem.net


2009/5/13 Rodrigo Braga <rbr...@gmail.com>

Marcio Cleber Barboza

unread,
May 13, 2009, 11:50:15 AM5/13/09
to dotnetar...@googlegroups.com
Já trabalhei com HTML + CSS + JS.

Sei que essa lista de discussão é sobre .NET, porém acho que o Ricardo quer algo parecido com o Wordpress.
"Zen garden" possui um HTML básico e a posição dos objetos no documento são definidos pela propriedade position absolute do CSS. O programador front-end terá grande trabalho para deixar o layout crossbrowser.

Att,

Marcio (Nescau)

2009/5/13 Rodrigo Braga <rbr...@gmail.com>

Juliano Oliveira

unread,
May 13, 2009, 11:54:44 AM5/13/09
to dotnetar...@googlegroups.com
Fazer um layout crossbrowser é obrigação. Em qualquer coisa que você deseje fazer com Html, inclusive os templates de blogs como wordpress.


[]´s

Juliano Oliveira
Analista Desenvolvedor
.Net, C#, Actionscript, Flex, NHibernate
http://programandoem.net


2009/5/13 Marcio Cleber Barboza <clebe...@gmail.com>

Anderson Correia

unread,
May 13, 2009, 12:29:52 PM5/13/09
to .Net Architects
Ricardo,

Somente para ficar mais claro e falar sobre alguns problemas que não
mencionei.
Você pode usar o mesmo recurso do WebForms (StyleSheetTheme) no
ASP.Net MVC, já que a ViewPage herda de Page.
Os cuidados que você deve tomar são:

1) Se configurar via @Page não terá muitos problemas, se for via
Web.config, você deve configurar o Web.config que fica no diretório de
Views
2) Para habilitar o dinamismo nos temas, você deve isto na sua View:

<script runat="server">
public override string StyleSheetTheme
{
get{ return ViewData.ContainsKey("Tema") ? ViewData
["Tema"].ToString() : "TemaPadrao"; }
}
</script>

Onde você configura o ViewData["Tema"] por um controller. Da forma que
está demonstrado, você está sobrescrevendo o comportamento padrão da
classe Page e portanto as configurações via @Page ou Web.config não
funcionarão.

Atenciosamente,

Anderson Correia.


On May 13, 12:54 pm, Juliano Oliveira <jul.olive...@gmail.com> wrote:
> Fazer um layout crossbrowser é obrigação. Em qualquer coisa que você deseje
> fazer com Html, inclusive os templates de blogs como wordpress.
>
> []´s
>
> Juliano Oliveira
> Analista Desenvolvedor
> .Net, C#, Actionscript, Flex, NHibernatehttp://programandoem.net
>
> 2009/5/13 Marcio Cleber Barboza <cleber.c...@gmail.com>
>
> > Já trabalhei com HTML + CSS + JS.
> > Sei que essa lista de discussão é sobre .NET, porém acho que o Ricardo quer
> > algo parecido com o Wordpress.
> > O "Zen garden" possui um HTML básico e a posição dos objetos no documento
> > são definidos pela propriedade position absolute do CSS. O programador
> > front-end terá grande trabalho para deixar o layout crossbrowser.
>
> > Att,
>
> > Marcio (Nescau)
>
> > 2009/5/13 Rodrigo Braga <rbr...@gmail.com>
>
> >> [humor]
>
> >> Está demorando para alguém falar algo como "em RoR é muito fácil,
> >> basta usar o 'ActiveLayout' ..."
>
> >> :)
>
> >> [/humor]
>
> >> 2009/5/13 Anderson Correia <info.corr...@gmail.com>:
> >>http://www.csszengarden.com/tr/portuguese/?cssfile=/213/213.css&page=...

Ricardo Rocha

unread,
May 13, 2009, 12:43:48 PM5/13/09
to dotnetar...@googlegroups.com
Anderson, irei utilizar exatamente isso.
 
O trabalho para criar os estilos com os posicionamentos para todos navegadores será compensado pela facilidade de manutenção.
Já tenho bastante do posicionamento feito via css, não será muito complicado fazer as alterações que preciso.
 
Obrigado a todos !!!!


 
2009/5/13 Anderson Correia <info.c...@gmail.com>
Reply all
Reply to author
Forward
0 new messages