I have this markup:
<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("\"","&qout;"), DataItem.AppType)%>' CommandArgument="<%#DataItem.Id.ToString()%>" analyticstrackingpath="/virtual/apps/myappslist/Delete">Delete</asp:LinkButton>
</div>
</div>
</li>
</ItemTemplate>
</asp:Repeater>
and code behind:
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();
}
}
I saw sometime Person is null so I wanted to do a safety check:
if (Person!= null)
{
// same as above
}
else
{
appsRepeater.DataSource = new List<IApp>();
appsRepeater.DataBind();
}
But my markup throws Rendering Error.
The data source can be not assigned but cannot be empty list ?
Or is it something else ?
the error:
Server Error in ‘/’ Application.
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 55: %>
Line 56: <Toolbar:Selector ID="Selector1" runat="server"></Toolbar:Selector>
Line 57: <%}
Line 58: %>
Line 59:
Source File: d:\MyName\RnD\Server\Services\ControlPanel\Dev-SSO-1.0-RewardsWithWibiya\ControlPanel\Masters\ControlPanelMaster.Master Line: 57
Stack Trace:
[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:\MyName\RnD\Serve: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:\MyName\RnD\Server\Services\ControlPanel\Dev-SSO-1.0-RewardsWithWibiya\ControlPanel\Masters\ControlPanelMaster.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
The problem was I sent a
new List<IApp>()instead of newIApp[0].