2009-08-28 4 views
2

dans les formulaires Web J'utiliserais toujours ma page maître pour définir les titres de pages et les méta-descriptions en fonction de l'URL actuelle. Je pensais faire la même chose pour mes projets Asp.net Mvc mais je ne sais pas par où commencer. Ce serait bien de pouvoir définir le titre/la description en fonction du contrôleur et/ou de l'action avec des valeurs par défaut. Je ne spécifie aucune information. La raison pour laquelle je fais cela est parce que j'aime que tout soit dans un endroit parce que cela permet de repérer facilement les erreurs.Asp.net Mvc: Titre de la page dynamique

Edit:
Après avoir lu les réponses et googler un peu, je pensais que ce pourrait être cool pour obtenir les informations d'un fichier xml. Avec Xml regardant quelque chose comme ceci:

<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> 

Je suis nouveau à Asp.net Mvc donc je ne suis pas sûr où initialisons.

+0

J'espère que c'est correct de mettre à jour ma question un peu. Commenter une autre question ne semblait pas correct et publier une réponse semblait encore plus stupide. – Pickels

+1

Non, la mise à jour de votre question est absolument correcte, si vous avez de nouvelles informations/un aperçu de votre problème. Ajouter une modification/mise à jour comme vous l'avez fait est préférable. :) –

Répondre

0

Donc, après quelques jours d'essais, j'ai fini par créer un filtre personnalisé qui lit à partir d'un fichier XML.

j'ai ajouté le code à copypastecode.com
http://www.copypastecode.com/9797/
http://www.copypastecode.com/9809/
http://www.copypastecode.com/9805/

Je suis très novice à Asp.net et Mvc "réel" C# codage donc si vous voyez des choses étranges s'il vous plaît pardonnez-moi. Si quelqu'un veut l'optimiser ou a une meilleure solution, n'hésitez pas à le poster comme réponse.

La prochaine chose que je vais essayer est de le faire sans filtre donc il est activé sur tous les contrôleurs. Je ne sais pas où connecter la logique si. Donc, si quelqu'un peut me pousser dans la bonne direction, faites le moi savoir.

+0

Les liens sont tous morts – qujck

0

Vous pouvez simplement extraire ces données du modèle de la page maître, puis laisser ce modèle présenter des valeurs par défaut raisonnables.

7

Je propose la stratégie suivante:

Créer une hiérarchie de modèles:

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"; 
} 

Vous définissez un modèle maître à détenir le titre de la page et de créer des modèles de base pour maintenir les titres par défaut pour un contrôleur. De cette façon, vous pouvez définir le titre dans chaque action explicitement ou le laisser de sorte que le titre par défaut pour ce contrôleur sera utilisé.

Alors à votre avis maître que vous écrivez juste une fois:

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

et est fait.

+1

Comment ce modèle est-il exposé à la page maître? Je suis un noob à ceci. –

+0

Un contrôleur envoie un ViewModel à la vue et dans le contrôleur vous définissez la propriété 'PageTitle'. –

Questions connexes