может ли asp: repeater быть с пустым списком в качестве источника данных?

#c# #asp.net #repeater

#c# #asp.net #повторитель

Вопрос:

У меня есть эта разметка:

     <asp:Repeater ID="appsRepeater" runat="server">
        <ItemTemplate>
            <li>
                <div class="clearfix">
                    <a href="---some code I emitted--">
                        <img width="20" height="20" src="<%#DataItem.ThumbnailUrl%>" alt="" />
                        <span title="<%#Server.HtmlEncode(DataItem.Name)%>"><%#MarketplaceUIAdapter.EncodeTrimText(DataItem.Name,15)%></span>
                    </a>
                    <div class="app_links">
                        <a href="---some code I emitted--" class="text_link">
                            Edit</a>
                        <asp:LinkButton runat="server" CssClass="text_link" OnClick="DeleteApp" OnClientClick='<%# string.Format("return confirmDelete("{0}","{1}")",DataItem.Name.Replace(""","amp;qout;"), DataItem.AppType)%>' CommandArgument="<%#DataItem.Id.ToString()%>" analyticstrackingpath="/virtual/apps/myappslist/Delete">Delete</asp:LinkButton>
                    </div>
                </div>
            </li>
        </ItemTemplate>
    </asp:Repeater>
  

и код позади:

     private void BindData()
    {

        apps = Person.Apps.ToArray();
        Array.Sort(apps, (a2, a1) => a1.CreatedDate.CompareTo(a2.CreatedDate));
        if (apps.Count() > 0)
        {
            appsRepeater.DataSource = apps;
            appsRepeater.DataBind();
        }          
    }
  

Я видел, что когда-то Person равен null, поэтому я хотел сделать проверку безопасности:

             if (Person!= null)
            {
                // same as above   

            }

        else
        {
            appsRepeater.DataSource = new List<IApp>();
            appsRepeater.DataBind();
        }
  

Но моя разметка выдает ошибку рендеринга.
Источник данных может быть не назначен, но не может быть пустым списком?
Или это что-то еще?

ошибка: ошибка сервера в приложении ‘/’.

Ссылка на объект не установлена для экземпляра объекта.

Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта.

Ошибка источника:

 Line 55:                        %>
Line 56:                     <Toolbar:Selector ID="Selector1" runat="server"></Toolbar:Selector>
Line 57:                        <%}
Line 58: %>
Line 59:                     

Source File: d:MyNameRnDServerServicesControlPanelDev-SSO-1.0-RewardsWithWibiyaControlPanelMastersControlPanelMaster.Master    Line: 57 
  

Трассировка стека:

 [NullReferenceException: Object reference not set to an instance of an object.]
   **ASP.browserapps_controls_myapps_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer)  52**
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)  114
   ASP.browserapps_controls_createapp_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in D:MyNameRnDServe:172
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)  114
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)  239
   ASP.masters_controlpanelmaster_master.__RenderfrmMain(HtmlTextWriter __w, Control parameterContainer) in d:MyNameRnDServerServicesControlPanelDev-SSO-1.0-RewardsWithWibiyaControlPanelMastersControlPanelMaster.Master:57
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)  114
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)  252
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output)  86
   System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer)  52
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)  239
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)  239
   System.Web.UI.Page.Render(HtmlTextWriter writer)  37
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)  4239
  

Комментарии:

1. Он может быть установлен в пустой список. Пожалуйста, опубликуйте полное сообщение об ошибке, которое вы получите, и мы увидим, в чем настоящая проблема. Моя догадка, что тип Apps не IApp является — вероятно, что-то другое реализует этот интерфейс.

Ответ №1:

Проблема заключалась в том, что я отправил a new List<IApp>() вместо new IApp[0] .