首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当查询不返回记录时,如何使用SelectMethod执行模型绑定?

当查询不返回记录时,如何使用SelectMethod执行模型绑定?
EN

Stack Overflow用户
提问于 2014-01-21 16:09:13
回答 2查看 503关注 0票数 0

我有一个ListView控件,我使用的是SelectMethod属性的模型绑定。我在实体框架6中使用了ASP.NET 4.5。现在在select方法中,如果找到任何记录,ListView就会加载。但是,如果SelectMethod函数返回null,意味着它不返回任何记录,我收到一个NullReferenceException。我想继续在ListView中使用SelectMethod,但没有这个异常(即加载一个空列表视图)。这个是可能的吗?还是我必须删除SelectMethod属性并从代码隐藏的事件处理程序中手动加载该属性?

示例代码

代码语言:javascript
复制
<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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-22 09:18:51

返回类型是IQueryable,所以您应该返回一个IQueryable。

代码语言:javascript
复制
var query = from ba in dbContext.BankAccounts
            where ba.Id == acct.Id
            select ba;

return query;

如果查询不返回记录,则让listview处理‘空白/空’IQueryable。

票数 1
EN

Stack Overflow用户

发布于 2014-01-21 17:53:23

如果要在不存在数据时显示消息,请实现EmptyDataTemplate:

//在.aspx中

代码语言:javascript
复制
<asp:ListView ID="lvBankAccounts" runat="server">
    <EmptyDataTemplate>
        No data available.
    </EmptyDataTemplate>
</asp:ListView>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21263313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档