Hallo,

> Ich habe mich mal an das von Alex in seinem Blog empfohlene
> "Template System" gemacht.
>
> http://www.csharphelp.com/archives2/archive383.html
>
> Ist im Grunde wirklich so einfach zu implementieren, wie es
> der Autor schreibt.
>
> Bis auf einen Punkt: meine Formulare funktionieren nicht mehr...
> auch das Beispiel (ControlsPage.aspx) funktioniert bei mir nicht.
>
> Meine Vermutung: er haut vor jede ID die des Templates, was dann
> dazu führt dass nix mehr funzt.
>

sehr wahrscheinlich bekommst Du beim Postback einen JS-Error,
oder?
Das Problem rührt von einem Bug in ASP.NET. In dem PostBack-
Konstrukt wird anstelle des "_" ein ":" eingebaut.

Dafür gibt es einen FIX von MS, den man aber explizit anfordern
muß.

Die andere Möglichkeit ist, das unten aufgeführte
Render-Konstrukt in die Template.ascx.cs einzubauen.
Diese überschreibt dann die ":" - Einträge mit "_" und
es sollte funktionieren.

Hat auch den Vorteile, daß Du Deine Entwicklungen auf
ungepatchten Servern installieren kannst.

Der Code:

protected override void Render(HtmlTextWriter writer)
{
        StringBuilder stringBuilder = new StringBuilder();
        StringWriter stringWriter = new StringWriter(stringBuilder);
        HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
        base.Render(htmlWriter);
        string html = stringBuilder.ToString();

        int start = html.IndexOf("<form name=\"") + 12;
        int end = html.IndexOf("\"", start);
        string formID = html.Substring(start, end - start);
        string replace = formID.Replace(":", "_");
        html = html.Replace("document." + formID, "document." + replace);
        writer.Write(html);
}


Gruss

Alex


_______________________________________________
Asp.net mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/asp.net

Reply via email to