2009-05-21 5 views
29

Obwohl die klassische ASP-Methode der Server-Seite funktioniert in ASP.NET, habe ich den Eindruck, es ist nicht die bevorzugte Methode. Wie soll ich "den gleichen Effekt erzielen"?ASP.NET Äquivalent der Server-Seite enthält

Dies ist, wie ich es im Moment so mache:
<!-- #include file ="functionlib.aspx" -->

+0

Obwohl nicht so spezifisch wie Ihre Frage, können Sie diese ein hilfreich: http://stackoverflow.com/questions/23899/best-practices-for-refactoring-classic-asp –

Antwort

34

Sie haben jetzt eine Reihe von Optionen, die diesen Effekt bieten, aber auf andere Weise.

  • User Controls (ASCX)
  • Master Pages (.master)
  • Server Side Controls (.dll)
  • Class Libraries (DLL)
  • App_Code Classes (CS- /. vb)

Jeder wird für unterschiedlich verwendet, um verschiedene Dinge zu erreichen. Es hängt davon ab, was Sie wirklich tun wollen. Angesichts des Namens Ihrer Include-Datei würde ich mir vorstellen, dass Sie versuchen, Bibliotheksfunktionen einzubinden, die im Kontext Ihrer Seite verwendet werden.

Folglich würden Sie eine Klassenbibliothek schreiben, die die Methoden enthält und sie in Ihre Anwendung/aspx importieren.

Wenn Sie eine Seite entwerfen, die den Großteil des Layouts erledigt, um eine Stelle für unterschiedliche Inhalte bereitzustellen, dann werden Sie sich für Master Pages interessieren.

Wenn Sie sich Templating-Steuerelemente ansehen, die auf vielen Seiten verwendet werden können, dann werden Sie nach den Steuerelementen suchen.

Wenn Sie sich Templating-Steuerelemente ansehen, die von vielen Benutzern in vielen Projekten verwendet werden können, dann sehen Sie sich Server Side Controls an.

Wenn Sie eine Bibliothek von Klassen/Methoden betrachten, entwickeln Sie eine Klassenbibliothek oder verwenden eine Klasse app_code, die beim ersten Aufruf von JIT kompiliert werden kann. Diese könnte auf einmal als mehr wie klassische ASP betrachtet werden, aber es funktioniert wirklich mehr wie eine Klasse aus einer Klassenbibliothek als eine Einheit.Sie können es innerhalb Ihres Codebehinds oder innerhalb von <%%> -Tags in Ihrem aspx/ascx-Code aufrufen, ohne einen Verweis auf eine Klassenbibliothek zu benötigen.

Wir verwenden "Includes" nicht wirklich mehr, aber jedes dieser Tools in Ihrem Toolkit ermöglicht es Ihnen, ähnliche Konzepte für verschiedene Szenarien bereitzustellen. Als Entwickler interagieren Sie unterschiedlich mit dem gesamten Seitenlebenszyklus Ihrer Webseiten. ASP.NET ist ein ganz anderes Biest als der klassische ASP. Es erfordert wirklich eine andere Sichtweise und erfordert etwas Geduld, um die Unterschiede herauszufinden.

+2

Vergessen Sie nicht, App_Code-Klassen - die näher am klassischen ASP-Modell sind als eine Klassenbibliothek. –

+0

Oh ja, ich habe diese vergessen ... danke – BenAlabaster

8

Wenn you'e ASP.NET MVC dann Html.RenderPartial hier dein Freund.

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

Eine Teilansicht kann als .ascx oder eine ASPX umgesetzt werden und im Grunde sagt im „primären“ Seite den obigen Aufruf setzen „um die Ausgabe von dieser Teilansicht bekommen und es macht hier“.

Parienansichten können die ViewData verwenden, die Ihre primäre Ansicht vom Controller erhalten hat.

+0

Nur wenn Sie in ASP.NET MVC sind. –

+1

Er ..... ja. Aus irgendeinem Grund lese ich "MVC" in der Frage, wenn es eindeutig nicht da ist. Sind die Leute immer noch alt-skool ASP.NET ??? ;-) –

+0

lol @ Martin ... äh, ja. MVC ist nur eine Modeerscheinung, die alle nächste Woche aufhören werden. Lassen Sie die Religionskriege beginnen;) – BenAlabaster

1

Klingt wie, was Sie betrachten müssen, ist das gesamte Konzept von MasterPages.

Es sei denn, Sie betrachten nur Importieren von Funktionen und anderen Dienstprogrammen (nicht HTML-Inhalt). Wenn dies der Fall ist (und Sie das CodeBehind-Modell verwenden), sollten Sie einfach die entsprechende Datei oder den entsprechenden Namespace mit dem Import-Befehl oben auf der .vb-Seite einfügen können (passen Sie sie entsprechend für C# an).

11

Wie wäre es mit <% Response.WriteFile("myFile.aspx) %>?

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

+0

Einfach und effektiv. Ich mag :). –

+11

nur um zu klären, auch wenn die enthaltene Datei in '.aspx 'endet, wird es nicht von der asp.net-Engine verarbeitet werden – mxmissile

Verwandte Themen