2010-06-10 40 views
8

我刚刚开始一个新项目,我正在发生一些非常奇怪的事情。为什么我的Repeater在代码后面为空?

ASP.NET 3.5,VS2008。

我试过重建,关闭VS,删除一切,并再次从svn,但我不明白为什么在page_load下面的中继器为null。

我知道这将是一个头顶的时刻。帮帮我?

标记:

<%@ 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> 

代码背后

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(); 
    } 
} 

设计师:

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; 
} 

为什么我的中继空? F正在发生什么?

的参考页有这样的:

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

web.config中有这个(我以前从来没有这样做,但我的母版在抱怨找不到另一个用户控制)。

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

很奇怪。你有没有检查你的.aspx.designer.cs文件的中继器控制? 也许由于某种原因,设计者并没有自动生成参考?我见过之前发生过。 – RPM1984 2010-06-10 00:50:06

+0

是的,它在那里。更新的问题。 – 2010-06-10 00:54:19

+0

我刚刚尝试创建一个具有相同效果的全新控件。引用它的页面上有一个DropDownList,这很好。 – 2010-06-10 00:58:48

回答

14

经过数小时的头撞我终于明白了这一点。

我正在引用Web配置中的用户控件,如上所述(我也尝试了使用Assembly的Register方法)。我认为当控件位于同一个程序集中时,这种方法有点怪异。所以引用他们是这样的:

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

立即工作。

我希望有同样问题的其他人发现这个有用。

+0

谢谢,马上解决了我的问题! – johna 2012-03-07 09:26:57

0

我有一个类似的问题,只是意识到有问题的中继器在另一个中继器的(大量)头模板中。 以这种方式重新排列标题模板,使得所述中继器在外面,解决了问题... 奇怪的是,虽然没有编译器错误

相关问题