2009-05-21 5 views
29

Bien que la méthode ASP classique du côté serveur fonctionne dans ASP.NET, j'ai l'impression que ce n'est pas la méthode préférée. Comment suis-je "supposé" atteindre le même effet?L'équivalent ASP.NET du côté serveur inclut

Voilà comment je le fais en ce moment:
<!-- #include file ="functionlib.aspx" -->

+0

Bien que pas aussi précis que votre question, vous pourriez trouver celui utile: http://stackoverflow.com/questions/23899/best-practices-for-refactoring-classic-asp –

Répondre

34

Vous avez maintenant un certain nombre d'options qui fournissent cet effet, mais d'une manière différente.

  • Contrôles utilisateur (.ascx)
  • Master Pages (de .master)
  • contrôles côté serveur (.dll)
  • bibliothèques de classes (.dll)
  • Classes App_Code (.cs de /. vb)

Chacun est utilisé différemment pour réaliser différentes choses. Cela dépend de ce que vous essayez vraiment de faire. Étant donné le nom de votre fichier d'inclusion, j'imagine que vous essayez d'inclure des fonctions de bibliothèque qui seront utilisées dans le contexte de votre page.

Par conséquent, vous devez écrire une bibliothèque de classes qui contient les méthodes et les importer dans votre application/aspx.

Si vous envisagez de modéliser une page qui fera le travail de mise en page pour fournir un contenu différent, vous serez intéressé par les pages maîtres.

Si vous envisagez d'utiliser des contrôles de modèle pouvant être utilisés sur plusieurs pages, vous devrez utiliser les commandes utilisateur.

Si vous envisagez d'utiliser des contrôles de modèle qui peuvent être utilisés par de nombreux utilisateurs sur de nombreux projets, vous examinerez les contrôles côté serveur. Si vous regardez une bibliothèque de classes/méthodes, vous développez une bibliothèque de classes ou utilisez une classe app_code qui peut être compilée JIT la première fois qu'elle est appelée. Ce pourrait être considéré plus comme ASP classique, mais en réalité il fonctionne plus comme une classe d'une bibliothèque de classe comme une seule unité.Vous pouvez l'appeler à partir de votre codebehind ou à l'intérieur des balises <%%> dans votre code aspx/ascx sans avoir besoin d'une référence à une bibliothèque de classes.

Nous n'utilisons pas vraiment "includes" en tant que tel, mais chacun de ces outils dans votre boîte à outils vous permet de fournir des concepts similaires pour différents scénarios. En tant que développeur, vous interagirez différemment avec l'ensemble du cycle de vie de vos pages Web. ASP.NET est une bête très différente de l'ASP classique. Il faut vraiment une approche/approche différente et il faudra un peu de patience pour comprendre les différences.

+2

Ne pas oublier les classes App_Code - qui sont plus proches du modèle ASP classique qu'une bibliothèque de classes. –

+0

Oh oui, j'ai oublié ceux-là ... merci – BenAlabaster

8

Si you'e en utilisant ASP.NET MVC alors Html.RenderPartial est votre ami ici.

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial.aspx

Une vue partielle peut être mis en œuvre en tant que .ascx ou un .aspx et mettre l'appel ci-dessus dans votre page « primaire » dit essentiellement « obtenir la sortie de ce point de vue partielle et rendre ici ».

Les vues parentales peuvent utiliser le ViewData que votre vue principale a reçu du contrôleur.

+0

seulement si vous êtes dans ASP.NET MVC. –

+1

Euh ..... ouais. Pour une raison quelconque, je lis "MVC" dans la question quand il n'est clairement pas là. Est-ce que les gens font encore du vieux ASP.NET? ;-) –

+0

lol @ Martin ... euh, oui. MVC est juste une mode que tout le monde va arrêter d'utiliser la semaine prochaine. Que les guerres de religion commencent;) – BenAlabaster

1

On dirait que ce que vous devez regarder est le concept entier de MasterPages. À moins que vous ne regardiez que l'importation de fonctions et d'autres utilitaires (pas le contenu html). Si tel est le cas (et que vous utilisez le modèle code-behind), vous devriez simplement pouvoir inclure le fichier ou l'espace de noms approprié en utilisant la commande imports en haut de votre page .vb (ajuster en conséquence pour C#).

11

Que diriez-vous de <% Response.WriteFile("myFile.aspx) %>?

Voir: https://support.microsoft.com/kb/306575

+0

Simple et efficace. J'aime :). –

+11

juste pour clarifier, même si le fichier inclus se termine par '.aspx', il ne sera pas traité par le moteur asp.net – mxmissile

Questions connexes