2009-08-04 6 views
2

Vous cherchez des conseils sur le net mais ne pas aller très loin, alors j'ai pensé que je demanderais quelques conseils. Je l'ai vu faire, alors sachez ce que je veux faire, mais en regardant je peux comprendre comment cela a été faitASP.NET héritage de page

Ce que je veux faire, c'est permettre aux utilisateurs de modifier la mise en page d'un fichier ASPX, de sorte qu'ils peut l'utiliser comme un modèle de lettre, le déplacement des lignes d'adresse, le format de la page etc Maintenant, dans l'exemple que j'ai montré, la page héritait d'une classe standard, et cette classe avait un ensemble de fonctions génériques, telles que foreName/sureName/addressLine1 etc, puis lors de la conception du fichier ASPX, si l'utilisateur voulait afficher addressLine1 ils ajouteraient le tag content = "addressLine1"

Tous les conseils sur la façon d'atteindre ce qui précède serait grandement apprécié, pense que je me manque beaucoup de choses simples

Répondre

3

Il pourrait être possible d'utiliser un baseclass avec les propriétés dont ils ont besoin pour définir comme membres virtuels. Créez simplement une classe (pas de page, juste une classe) dans votre projet avec les membres virtuels que vous voulez que vos utilisateurs utilisent.

public class BasePage : Page { 
    public virtual string Content; 
} 

Dans les pages que vous (ou vos utilisateurs) créez, vous devez hériter de cette classe. Page ressemblerait à ceci:

public class MyPage : BasePage { 
    public override string Content = "My Content"; 

    //Other logic can go here 
} 

(depuis le BasePage hérite de la classe La page fonctionnera comme toute autre page ASPX).

Veuillez noter que la classe de pages de base doit être définie dans le dossier App_Code pour être disponible pour les autres pages/éléments de votre projet.

Cela peut également être fait pour les fonctions.

Plus lecture sur les membres virtuels et des fonctions peut se faire à MSDN

+1

App_Code ne serait nécessaire pour un site Web, et non pour des projets d'application Web. –

+0

C'est vrai. Mon expérience est que les projets de sites Web sont utilisés la plupart du temps (utilisez-les moi-même tout le temps) et beaucoup de gens essaient de croiser des pages de référence (ce qui échouera). Mais merci pour la clarification! Pour autant que je sache, les applications Web ont été introduites dans la version 2.0 pour assurer la rétrocompatibilité avec les versions 1.0 et 1.1. Les applications Web se comportent comme dans les anciennes versions. Les projets de sites Web sont plus récents (et je conseille donc d'utiliser des sites Web la plupart du temps). – Gertjan

+0

OK, je vois que, cependant, ce que je ne vois pas comment placer content = "addressLine1" dans le balisage, provoquera l'appel de la fonction addressLine1 .... ai-je un sens, dois-je changer mon question? – spacemonkeys