正在从列表框中返回Id

本文关键字:返回 Id 列表 | 更新日期: 2023-09-27 18:29:53

我的WCF中有两个方法,一个用于填充我的ListBox,另一个用于删除我选择的ListBox项。

我的问题是,当我运行Delete方法时,Data显示为null,也没有错误或异常。

编码运行平稳,但没有任何更改,"选定项目"将保留在列表框中。

WPF

private void bnFeedDel_Click(object sender, RoutedEventArgs e)
{
    using (TruckServiceClient service = new TruckServiceClient())
    {
        service.DelFeedAsync(new FeedView
            {
                Id = lbFeed.SelectedIndex
            });
    }
}
public async Task LoadFeeds()
{
    TruckServiceClient TSC = new TruckServiceClient();
    try 
    {           
        List<ClientItems> feeditems = new List<ClientItems>();
        foreach (var item in await TSC.GetFeedAsync())
        {
            feeditems.Add(new ClientItems
                {
                    FId = item.Id,
                    FTitle = item.Title,
                    FContent = item.Content
                });
        }
        lbFeed.ItemsSource = (feeditems.ToArray());
        lbFeed.DisplayMemberPath = "FTitle";
    }
    catch (Exception)
    {
        throw;
    }
}

WCF

public void DelFeed(FeedView feedview)
{
    using (var result = new TruckDb())
    {
        var t = new Feed
            {
                Id = feedview.Id,
                Title = feedview.Title,
                Content = feedview.Content
            };
        result.Feed.Remove(t);
        result.SaveChanges();
    }
}

这对我来说还是一件新鲜事,所以对我的编码有任何意见/建议都将不胜感激。

正在从列表框中返回Id

在对WCF服务的调用中,您将传入一个新的FeedView实例,其中仅设置了Id属性:

service.DelFeedAsync(new FeedView { Id = lbFeed.SelectedIndex });

因此,当服务方法运行时,TitleContent都没有要设置的值(假设它们都是字符串,则它们将为null或空字符串):

var t = new Feed {
        Id = feedview.Id,
        Title = feedview.Title,
        Content = feedview.Content};

调用result.Feed.Remove(t);时,不会删除任何内容,因为没有要删除的匹配项。

附加说明:将using与WCF服务客户端一起使用违反了最佳实践:https://msdn.microsoft.com/en-us/library/aa355056(v=vs.110).aspx