代码之家  ›  专栏  ›  技术社区  ›  Rob Stevenson-Leggett

为什么我的转发器在代码隐藏中为空?

  •  8
  • Rob Stevenson-Leggett  · 技术社区  · 14 年前

    我刚开始一个新的项目,我得到一些非常奇怪的事情发生。

    ASP.NET 3.5,VS2008。

    我尝试过重建、关闭vs、删除所有内容并再次从svn获取信息,但我不明白为什么下面的中继器在页面加载时为空。

    我知道这将是一个值得庆贺的时刻。帮帮我?

    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>
    

    代码落后

    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" />
    
    2 回复  |  直到 9 年前
        1
  •  14
  •   Rob Stevenson-Leggett    14 年前

    经过几个小时的头脑碰撞,我终于明白了这一点。

    我正在引用web配置中的用户控件,如前所述(我还尝试使用程序集的register方法)。我认为当控件在同一程序集中时,这种方法有点奇怪。所以像这样引用它们:

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

    立即工作。

    我希望其他有同样问题的人能发现这一点。

        2
  •  0
  •   Adam Hey    9 年前

    我有一个类似的问题,只是意识到有问题的中继器在另一个中继器的(大量)头模板中。 以这样一种方式重新排列头模板,即中继器在外部,解决了问题… 奇怪的是没有编译器错误