Kabelsalat
2006-04-26, 21:06:14
Hallo,
Ich habe momentan ein kleines Verständnisproblem was .Net 1.1 und folgende ASPX-Datei angeht:
<%@ Page Language="C#" AutoEventWireup="false" CodeBehind="ErrorPage.aspx.cs" Inherits="epiSource.DNN.Modules.epiFrame.ErrorPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title><asp:Literal runat="server" ID="ltTitle" /></title>
<link rel="stylesheet" type="text/css" href="<% = TemplateSourceDirectory + "/css/ErrorPage.css" %>" />
</head>
<body>
<div class="root">
<div class="caption"><asp:Literal runat="server" ID="ltCaption" /></div>
<div class="content">
<p><asp:Literal runat="server" ID="ltContent" /></p>
</div>
</div>
</body>
</html>
Das Literal-Control ltTitle ist im CodeBehind korrekt bekannt gemacht, wird allerdings nicht sauber initialisiert (ltTitle == null): Das muss ich erst händisch durch mit "ltTitle = (System.Web.Ui.WebControls.Literal) FindControl("ltTitle");" übernehmen.
Ich verstehe jedoch nicht, wie es dazu kommen kann. Eigentlich sollte die Position im Markup vollkommen egal sein, insbesondere da der serverseitiger Code Elemente ohne runat="server" schlichtweg ignorieren sollte. Außerdem funktioniert auch die Verwendung von Webcontrols in z.B. Seiten mit dem ContentType "text/css", die auch keinen HTML-Markup enthalten.
Unter .Net 2 habe ich das ganze wesentlich geschickter gelöst, aber für .Net 1 habe ich keine ordentlichere Lösung gefunden (ehrlichgesagt habe ich auch nicht weiter danach gesucht, da die eigentliche Anwendung für .Net 2 entwickelt wurde und das hier bloß ein Backport ist, bei dem es nicht umbedingt auf die Code-Qualität ankommt). Interessanterweise funktioniert jedoch auch die Lösung mit den Literals unter .Net 2 - selbst das Webcontrol im title-Element bereitet keine Probleme, wenngleich der Code-Editor der Meinung ist, dass der Tagpräfix asp unbekannt wäre.
Grüße vom Bodensee
Kabelsalat
Ich habe momentan ein kleines Verständnisproblem was .Net 1.1 und folgende ASPX-Datei angeht:
<%@ Page Language="C#" AutoEventWireup="false" CodeBehind="ErrorPage.aspx.cs" Inherits="epiSource.DNN.Modules.epiFrame.ErrorPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title><asp:Literal runat="server" ID="ltTitle" /></title>
<link rel="stylesheet" type="text/css" href="<% = TemplateSourceDirectory + "/css/ErrorPage.css" %>" />
</head>
<body>
<div class="root">
<div class="caption"><asp:Literal runat="server" ID="ltCaption" /></div>
<div class="content">
<p><asp:Literal runat="server" ID="ltContent" /></p>
</div>
</div>
</body>
</html>
Das Literal-Control ltTitle ist im CodeBehind korrekt bekannt gemacht, wird allerdings nicht sauber initialisiert (ltTitle == null): Das muss ich erst händisch durch mit "ltTitle = (System.Web.Ui.WebControls.Literal) FindControl("ltTitle");" übernehmen.
Ich verstehe jedoch nicht, wie es dazu kommen kann. Eigentlich sollte die Position im Markup vollkommen egal sein, insbesondere da der serverseitiger Code Elemente ohne runat="server" schlichtweg ignorieren sollte. Außerdem funktioniert auch die Verwendung von Webcontrols in z.B. Seiten mit dem ContentType "text/css", die auch keinen HTML-Markup enthalten.
Unter .Net 2 habe ich das ganze wesentlich geschickter gelöst, aber für .Net 1 habe ich keine ordentlichere Lösung gefunden (ehrlichgesagt habe ich auch nicht weiter danach gesucht, da die eigentliche Anwendung für .Net 2 entwickelt wurde und das hier bloß ein Backport ist, bei dem es nicht umbedingt auf die Code-Qualität ankommt). Interessanterweise funktioniert jedoch auch die Lösung mit den Literals unter .Net 2 - selbst das Webcontrol im title-Element bereitet keine Probleme, wenngleich der Code-Editor der Meinung ist, dass der Tagpräfix asp unbekannt wäre.
Grüße vom Bodensee
Kabelsalat