我有一个ListView控件,我使用Model Binding和SelectMethod属性。我正在使用ASP.NET 4.5和Entity Framework 6.现在在select方法中,如果找到任何记录,ListView加载正常。但是,如果SelectMethod函数返回null,意味着它不返回任何记录,我会收到NullReferenceException。我想继续使用带有SelectMethod的ListView但没有此异常(即加载空列表视图)。这可能吗?或者我是否必须删除SelectMethod属性并从代码隐藏中的事件处理程序手动加载?
示例代码
<asp:ListView ID="lvBankAccounts" runat="server" ClientIDMode="Static" DataKeyNames="Id" ItemType="Models.BankAccountInfo" SelectMethod="GetBankAccounts">
<ItemTemplate>
<div>
<%# Item.BankName %>
</div>
.
.
</ItemTemplate>
</asp:ListView>
// Select Method
public IQueryable<Models.BankAccountInfo> GetBankAccounts()
{
int Id;
int.TryParse(Request.QueryString["id"], out Id);
Models.BankAccountInfo acct = dbContext.BankAccounts.Find(Id);
if (acct != null)
{
return dbContext.BankAccounts.Where(account => account.Id == acct.Id);
}
return null;
}
答案 0 :(得分:1)
返回类型是IQueryable,因此您应该返回IQueryable,例如
var query = from ba in dbContext.BankAccounts
where ba.Id == acct.Id
select ba;
return query;
如果查询没有返回任何记录,那么让listview处理'blank / null'IQueryable。
答案 1 :(得分:0)
如果要在没有数据时显示消息,请执行EmptyDataTemplate:
//在你的.aspx
中<asp:ListView ID="lvBankAccounts" runat="server">
<EmptyDataTemplate>
No data available.
</EmptyDataTemplate>
</asp:ListView>