In früheren ASP-Programmen haben wir häufig Response.Write verwendet, um Webseiten-Header-Informationen dynamisch auszugeben, aber in ASP.NET verlangt das sogenannte Leitprinzip der Trennung von Code und Benutzeroberfläche nicht mehr, dass wir dies tun (natürlich, wenn Sie möchten). Ich habe gesehen, dass andere <title ranut="server" id="titleControl">Default Title</title> verwenden, um den Titel festzulegen, aber ich nicht Ich denke nicht, dass es sehr gut ist, weil es redundante id=" titleControl" generiert. Ich persönlich halte es für besser, das Literal-Steuerelement zu verwenden, da es kein redundantes Zeichen erzeugt :). Einige Leute verwenden auch js, um den Titel dynamisch festzulegen , aber was verlangen Sie von der Suchmaschine? Es
ist eigentlich sehr einfach, die Head-Informationen der Seite dynamisch zu steuern. Schauen Sie sich einfach zuerst die Demo an: http://www.lvjiyong.com/demo/aspnet/setheader/.
hauptsächlich
ansehen.
Die Methode wird in BasePage platziert. Wenn Sie WebForm das nächste Mal die BasePage-Klasse erben lassen, können Sie sie mit Literal aufrufen. Verwenden Sie PlaceHolder, um das Stylesheet und das Skript zu laden.
Mit Literal können wir Textinformationen direkt festlegen. Bei der Verwendung lassen wir das Programm zunächst herausfinden, ob ein bestimmtes Literal-Steuerelement vorhanden ist, und legen dann den Text fest
/**//// <Zusammenfassung>
/// Kopfinformationen festlegen
/// </summary>
/// <param name="_name">Steuerung</param>
/// <param name="_control">Text</param>
private void setHeader(string _control, string _text)
{
Literal obj = this.FindControl(_control) as Literal;
if(obj != null)
{
obj.Text = _text;
}
}
Wenn wir beispielsweise <asp:Literal id="PageTitle" runat="server" /> im Head-Bereich festlegen, können wir den Titel wie folgt festlegen. Hier bereiten wir zunächst eine Methode vor.
/**//// <Zusammenfassung>
///Webseitentitel festlegen
/// </summary>
/// <param name="_title">Webseitentitel</param>
protected void SetTitle(string _title)
{
setHeader("PageTitle","<title>" + _title + "</title>");
In WebFrom können wir den Titel so festlegen
this.SetTitle("Lus Blog");
Die Methoden für Beschreibung, Schlüsselwörter usw. sind die gleichen, aber Sie müssen darauf nicht näher eingehen.
Jetzt werde ich auf das Laden von js und css eingehen Wir verwenden das PlaceHolder-Steuerelement. Warum sollten Sie dieses anstelle von Literal verwenden?
PlaceHolder nimmt im Allgemeinen nur eine Position ein, was das dynamische Laden von Steuerelementen erleichtert. Dies macht das Laden von js und css viel bequemer. Erstens finden wir auch das angegebene PlaceHolder-Steuerelement.
/**//// <Zusammenfassung>
/// Finden Sie den PlaceHolder-Container von LoadHeader
/// </summary>
/// <returns></returns>
privates Steuerelement findHeader()
{
return this.FindControl("LoadHeader");
}Dann fügen Sie das Steuerelement dynamisch hinzu
/**//// <Zusammenfassung>
/// Laden Sie das Steuerelement in das PlaceHolder-Steuerelement
/// </summary>
/// <param name="_obj"></param>
protected void LoadPlaceHolder(HtmlGenericControl _obj)
{
objHeader = findHeader() as Control;
//Skriptdatei laden
if(objHeader != null)
{
objHeader.Controls.Add(_obj
}
}Um CSS oder JS zu laden, erstellen wir zunächst mit HtmlGenericControl ein untergeordnetes Steuerelement und fügen es dann dem PlaceHolder-Steuerelement hinzu
/**//// <Zusammenfassung>
/// Laden Sie die angegebene Stylesheet-Datei
/// </summary>
/// <param name="_cssPath">Stylesheet-Dateiadresse</param>
protected void LoadCss(string _cssPath)
{
HtmlGenericControl objCss = new HtmlGenericControl("link");
objCss.Attributes["rel"] = "stylesheet";
objCss.Attributes["type"] = "text/css";
objCss.Attributes["href"] = _cssPath;
objCss.Attributes["media"] = "screen";
this.LoadPlaceHolder(objCss);
}
Wenn wir dann das Stylesheet in WebForm laden möchten, müssen wir es nur noch verwenden
this.LoadCss("Style Sheet Address"); Es ist dasselbe wie das Laden von js.
Die Funktion, die ich im Quellcode geschrieben habe, ist etwas besser als das, was hier erwähnt wird selbst.