正在从列表框中返回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();
}
}
这对我来说还是一件新鲜事,所以对我的编码有任何意见/建议都将不胜感激。
在对WCF服务的调用中,您将传入一个新的FeedView
实例,其中仅设置了Id
属性:
service.DelFeedAsync(new FeedView { Id = lbFeed.SelectedIndex });
因此,当服务方法运行时,Title
和Content
都没有要设置的值(假设它们都是字符串,则它们将为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