通过HTTP方式删除列表项



我试图使用HTTP删除方法从集合中删除列表项,该方法采用id的一个参数。为了简单起见,我没有检查提供的输入,只是尝试将其转换为int。我的期望是,在调用id为1的delete方法之后,假设索引为1的项目必须从我的dishes collection中删除。但是,get方法仍然返回所有项。输入图片描述

你可以让你的菜单是静态的:

private static readonly List<string> dishes = new() { "Oxtail", "Curry Chicken", "Dumplings" };

只要你的应用程序正在运行,你可以删除项目,GetDishes()将给你想要的结果。

一旦你重新启动你的应用程序,你会有最初的3项。

如果此操作应该是持久的,则需要某种数据存储。例如:数据库

把我的评论移到一个答案上

问题是控制器是有范围的。这意味着每次有新请求进来时,那个类都会被重新创建这意味着字符串列表也会被重新创建因为它是一个实例变量。所以当你在做下一个" get "时你是在一个全新的类实例上做的因此是一个全新的list实例

如果您将列表设置为静态,那么应该可以解决这个问题,因为静态变量应该在应用程序的整个生命周期内持续存在。

如果您不想要任何检查,最简单的方法是

List<string> dishes = new() { "Oxtail", "Curry Chicken", "Dumplings" };

var id="Dumplings";
dishes.RemoveAll(d => d == id);

或加一些检查

var itemToRemove = dishes.Where(d => d == id).FirstOrDefault();
if(itemToRemove != null) dishes.Remove(itemToRemove);

最新更新