C# net MVC如何向IList方法添加数据对象
我正在创建一个测试项目,在那里我有产品,一开始我不想使用数据库,所以我制作了Mocks数据,返回产品列表,但我希望用户能够添加到列表中 这就是模型 这是模拟数据类 我对asp.net很陌生 我不知道是需要更改整个ProductMocks类,还是只需要在控制器中添加一些内容C# net MVC如何向IList方法添加数据对象,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在创建一个测试项目,在那里我有产品,一开始我不想使用数据库,所以我制作了Mocks数据,返回产品列表,但我希望用户能够添加到列表中 这就是模型 这是模拟数据类 我对asp.net很陌生 我不知道是需要更改整个ProductMocks类,还是只需要在控制器中添加一些内容 提前谢谢你 您的ProductMocks实现不正确,因为每次调用get时都访问ProductList属性,因此会创建一个新对象,因此您添加的对象会丢失在内存中的某个位置 将您的班级改为: public class Produc
提前谢谢你 您的
ProductMocks
实现不正确,因为每次调用get
时都访问ProductList
属性,因此会创建一个新对象,因此您添加的对象会丢失在内存中的某个位置
将您的班级改为:
public class ProductMocks
{
public ProductMocks()
{
ProductList = new List<Products>
{
new Products
{
Id = 1,
Name = "Some Data",
Price = 34.00
},
new Products
{
Id = 2,
Name = "More Data",
Price = 28.00
}
};
}
public IList<Products> ProductList
{
get;
set;
}
}
但是,第二种方法可能会导致调用方出现意外行为,例如,如果调用方希望ProductList
为null
将包含两个项,并且不为null
希望有帮助。您的
ProductMocks
实现不正确,因为每次调用get
时都访问ProductList
属性,因此创建了一个新对象,因此您添加的对象丢失在内存中的某个位置
将您的班级改为:
public class ProductMocks
{
public ProductMocks()
{
ProductList = new List<Products>
{
new Products
{
Id = 1,
Name = "Some Data",
Price = 34.00
},
new Products
{
Id = 2,
Name = "More Data",
Price = 28.00
}
};
}
public IList<Products> ProductList
{
get;
set;
}
}
但是,第二种方法可能会导致调用方出现意外行为,例如,如果调用方希望ProductList
为null
将包含两个项,并且不为null
希望能有所帮助。您所说的不工作是指任何编译或运行时错误吗?在ProductMock中,list getter每次都在重新创建一个新列表。制作一个不同的方法,如“Initialize”,添加这两项,并在需要时调用它,以便其他代码也可以添加到其中。不,我没有任何错误,但产品仍然没有传递到productList中。很好@SteveGreene@SteveGreene你能解释一下代码应该是什么样子吗!?不工作是指任何编译或运行时错误吗?在ProductMock中,列表获取程序每次都在重新创建一个新列表。制作一个不同的方法,如“Initialize”,添加这两项,并在需要时调用它,以便其他代码也可以添加到其中。不,我没有任何错误,但产品仍然没有传递到productList中。很好@SteveGreene@SteveGreene你能解释一下代码应该是什么样子吗!?非常感谢你!在那上面呆了一段时间非常感谢你!有一段时间我一直在想这个
[HttpPost]
public IActionResult NewProduct(NewProductViewModel vm)
{
if (ModelState.IsValid)
{
Products product = new Products()
{
Id = vm.Id,
Name = vm.Name,
Price = vm.Price
};
ProductMocks addProduct = new ProductMocks();
// THIS IS NOT WORKING
productMocs.ProductList.Add(product);
return View("Index", addProduct);
}
else
{
return View(vm);
}
}
public class ProductMocks
{
public ProductMocks()
{
ProductList = new List<Products>
{
new Products
{
Id = 1,
Name = "Some Data",
Price = 34.00
},
new Products
{
Id = 2,
Name = "More Data",
Price = 28.00
}
};
}
public IList<Products> ProductList
{
get;
set;
}
}
public class ProductMocks
{
private IList<Products> _ProductList;
public IList<Products> ProductList
{
get
{
if(_ProductList == null)
{
_ProductList = new List<Products>
{
new Products
{
Id = 1,
Name = "Some Data",
Price = 34.00
},
new Products
{
Id = 2,
Name = "More Data",
Price = 28.00
}
};
}
return _ProductList;
}
}
}