#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]
.