我有一个ListView控件,我使用的是SelectMethod属性的模型绑定。我在实体框架6中使用了ASP.NET 4.5。现在在select方法中,如果找到任何记录,ListView就会加载。但是,如果SelectMethod函数返回null,意味着它不返回任何记录,我收到一个NullReferenceException。我想继续在ListView中使用SelectMethod,但没有这个异常(即加载一个空列表视图)。这个是可能的吗?还是我必须删除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;
}发布于 2014-01-22 09:18:51
返回类型是IQueryable,所以您应该返回一个IQueryable。
var query = from ba in dbContext.BankAccounts
where ba.Id == acct.Id
select ba;
return query;如果查询不返回记录,则让listview处理‘空白/空’IQueryable。
发布于 2014-01-21 17:53:23
如果要在不存在数据时显示消息,请实现EmptyDataTemplate:
//在.aspx中
<asp:ListView ID="lvBankAccounts" runat="server">
<EmptyDataTemplate>
No data available.
</EmptyDataTemplate>
</asp:ListView>https://stackoverflow.com/questions/21263313
复制相似问题