2010-06-10 25 views
8

Ich beginne gerade ein neues Projekt und ich bekomme wirklich seltsame Dinge.Warum ist mein Repeater im Code null?

ASP.NET 3.5, VS2008.

Ich habe versucht, Rebuild, VS zu schließen, alles zu löschen und von Svn wieder zu bekommen, aber ich kann nicht verstehen, warum der Repeater im folgenden auf page_load null ist.

Ich weiß, das wird ein Kopfschütteln Moment sein. Helfen Sie mir?

Markup:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="GalleryControl.ascx.cs" Inherits="Site.UserControls.GalleryControl" %> 
<asp:Repeater ID="rptGalleries" runat="server"> 
    <HeaderTemplate><ul></HeaderTemplate> 
    <ItemTemplate> 
     <li>wqe</li> 
    </ItemTemplate> 
    <FooterTemplate></ul></FooterTemplate> 
</asp:Repeater> 

-Code hinter

public partial class GalleryControl : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     rptGalleries.DataSource = new[] {1, 2, 3, 4, 5}; 
     rptGalleries.DataBind(); 
    } 
} 

Designer:

public partial class GalleryControl { 

    /// <summary> 
    /// rptGalleries control. 
    /// </summary> 
    /// <remarks> 
    /// Auto-generated field. 
    /// To modify move field declaration from designer file to code-behind file. 
    /// </remarks> 
    protected global::System.Web.UI.WebControls.Repeater rptGalleries; 
} 

Warum ist mein Repeater null? Was macht das F?

Die Referenzierung Seite hat dies:

<ux:GalleryControl runat="server" ID="uxGalleryControl"/> 

Die web.config hat dieses (Ich habe noch nie, dies zu tun hatte, aber meine Masterpage beschwerte sich über keine weitere Benutzerkontrolle zu finden).

<add tagPrefix="ux" namespace="Site.UserControls" assembly="Site" /> 
+0

Sehr seltsam. Haben Sie Ihre Datei .aspx.designer.cs für das Repeater-Steuerelement überprüft? Vielleicht hat der Designer aus irgendeinem Grund die Referenz nicht automatisch generiert? Ich habe gesehen, dass das schon mal passiert ist. – RPM1984

+0

Ja, es ist da. Aktualisierte Frage. –

+0

Ich habe gerade versucht, ein völlig neues Steuerelement mit dem gleichen Effekt zu erstellen. Die Seite, die darauf verweist, hat eine DropDownList, was in Ordnung ist. –

Antwort

14

Nach stundenlangem Kopfschlagen habe ich endlich herausgefunden.

Ich verweise auf die Benutzersteuerelemente in der Webkonfiguration wie angegeben (ich habe auch die Register-Methode mit der Assembly versucht). Ich denke, dass es bei dieser Methode eine Verrücktheit gibt, wenn sich die Steuerelemente in derselben Baugruppe befinden. So Referenzieren sie wie folgt:

<%@ Register Src="~/UserControls/GalleryControl.ascx" TagPrefix="ux" TagName="GalleryControl" %> 

Arbeitet sofort.

Ich hoffe, dass jeder andere mit dem gleichen Problem das nützlich findet.

+0

Danke, löste mein Problem sofort! – johna

0

Ich hatte ein ähnliches Problem, nur um zu erkennen, dass der betreffende Repeater in der (massiven) Header-Vorlage eines anderen Repeaters war. Die Header-Vorlage so neu arrangieren, dass der Repeater draußen war, löste das Problem ... Seltsam, dass es keine Compilerfehler gab, obwohl

Verwandte Themen