Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# net MVC如何向IList方法添加数据对象_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# net MVC如何向IList方法添加数据对象

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

我正在创建一个测试项目,在那里我有产品,一开始我不想使用数据库,所以我制作了Mocks数据,返回产品列表,但我希望用户能够添加到列表中

这就是模型

这是模拟数据类

我对asp.net很陌生

我不知道是需要更改整个ProductMocks类,还是只需要在控制器中添加一些内容


提前谢谢你

您的
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;
        }

    }

}