Pergunta

No WebForms, eu sempre usava minha página principal para definir títulos de página e meta -descrição com base no URL atual. Eu estava pensando em fazer o mesmo para meus projetos de MVC do ASP.NET, mas não tenho certeza por onde começar. Seria bom poder definir o título/descrição com base no controlador e/ou ação com alguns valores padrão, caso eu não especifique nenhuma informação. A razão pela qual faço isso é porque eu gosto que tudo esteja em um só lugar, porque isso facilita a identificação de erros.

Editar:
Depois de ler as respostas e pesquisar algumas, eu estava pensando que poderia ser legal obter as informações de um arquivo XML. Com XML parecendo algo assim:

<website title="default title for webpage">
    <controller name="HomeController" title="Default title for home controller"> 
       <action name="Index" title="title for index action" />
    </controller>
</website>

Eu sou novo no ASP.NET MVC, então não tenho certeza de onde inicializar isso.

Foi útil?

Solução 3

Então, depois de alguns dias de tentativa, acabei fazendo um filtro personalizado que lê a partir de um arquivo XML.

Eu adicionei o código para copyPastecode.com
http://www.copypastecode.com/9797/
http://www.copypastecode.com/9809/
http://www.copypastecode.com/9805/

Eu sou muito iniciante no ASP.NET MVC e codificação "real" C#, por isso, se você vir coisas estranhas, por favor me perdoe. Se alguém quiser otimizá -lo ou tiver uma solução melhor, sinta -se à vontade para publicá -lo como uma resposta.

A próxima coisa que vou tentar é fazer isso sem um filtro para que seja ativado em todos os controladores. Não tenho certeza de onde conectar a lógica. Então, se alguém pode me empurrar para a direção certa, me avise.

Outras dicas

Eu sugiro a seguinte estratégia:

Crie uma hierarquia de modelos:

abstract class MasterModel
{
    public string PageTitle { get; set; }
}

abstract class HomeBaseModel : MasterModel
{
    PageTitle = "Home";
}

abstract class UsersBaseModel : MasterModel
{
    PageTitle = "Users";
}

/************************************/

class HomeNewsModel : HomeBaseModel
{
    PageTitle = "News";
}

class UsersProfileModel : UsersBaseModel
{
    PageTitle = "Profile";
}

Você define um modelo mestre para manter o título da página e cria modelos básicos para manter títulos padrão para um controlador. Dessa forma, você pode definir o título em cada ação explicitamente ou deixá -lo de fora para que o título padrão para este controlador seja usado.

Então, em sua visão mestre, você apenas escreve uma vez:

<title><%= Model.PageTitle %></title>

E está feito.

Você pode simplesmente extrair esses dados do modelo da página mestre e deixar esse modelo ter alguns padrões razoáveis.

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