C# ASP.net mvc-将项目添加到列表中不起作用,它什么也不做

C# ASP.net mvc-将项目添加到列表中不起作用,它什么也不做,c#,asp.net-mvc,forms,model,controller,C#,Asp.net Mvc,Forms,Model,Controller,我正在用ASP.NETMVC制作一个Web应用程序。您可以在:/recipe上查看配方 问题是当我在/recipe/create添加配方时,它不起作用。我希望它显示在/配方页面上 所以我认为控制器或视图有问题,但我认为是控制器 以下是recipeController代码: public class RecipeController : Controller { List<RecipeViewModel> vm = new List<RecipeViewModel>

我正在用ASP.NETMVC制作一个Web应用程序。您可以在:/recipe上查看配方

问题是当我在/recipe/create添加配方时,它不起作用。我希望它显示在/配方页面上

所以我认为控制器或视图有问题,但我认为是控制器

以下是recipeController代码:

 public class RecipeController : Controller
{
    List<RecipeViewModel> vm = new List<RecipeViewModel>();

    public IActionResult Index()
    {
        foreach (var recept in MockDataRecipeFactory.GetRecipes())
        {
            vm.Add(new RecipeViewModel
            {
                Id = recept.Id,
                Name = recept.Name,
                Category = recept.Category,
                NumberOfIngredients = recept.Ingredients.Count
            });
        }
        return View(vm);
    }

    public IActionResult Create()
    {
        return View();
    }

    [HttpPost]
    public IActionResult Create(RecipeViewModel recipemodel)
    {
        vm.Add(new RecipeViewModel
        {
            Name = recipemodel.Name,
            Id = recipemodel.Id,
            Category = recipemodel.Category,
            NumberOfIngredients = recipemodel.NumberOfIngredients
        });

        return RedirectToAction("Index");
    }
以下是视图中的表单:

<div class="row">
<div class="col-md-4">
    <form asp-action="Create">
        <div class="form-group">
            <label asp-for="Id">Id:</label>
            <input asp-for="Id" type="text" class="form-control" name="id" />
        </div>
        <div class="form-group">
            <label asp-for="Name">Naam:</label>
            <input asp-for="Name" type="text" class="form-control" name="name" />
        </div>

        <div class="form-group">
            <label asp-for="Category">Categorie</label>
            <select class="form-control" asp-for="Category">
                <option value="0">none</option>
                <option value="0">Cake</option>
                <option value="0">Desert</option>
                <option value="0">Sidedish</option>
                <option value="0">Maincourse</option>
            </select>
        </div>
        <div class="form-group">
            <label asp-for="NumberOfIngredients">Aantal</label>
            <input asp-for="NumberOfIngredients" type="number" class="form-control" name="number" />
        </div>
        <button type="submit" class="btn btn-primary">Voeg toe</button>
    </form>
</div>

身份证件:
纳姆:
分类
没有一个
蛋糕
沙漠
配菜
主干道
安塔尔
Voeg脚趾

因此,当我添加配方时,它会返回到配方页面,但不会显示添加的配方。我做错了什么


这不是线程安全的,也不适合生产。但是你应该能够测试驱动它

可能与您的问题没有任何关系,但您的所有类别
选项都有
value=“0”
,这是故意的吗?您确定它甚至会将其添加到控制器的列表中吗?尝试添加一个,然后再添加另一个,但在添加第二个断点之前在控制器上放置一个断点。看看第一个是不是added@Rafalon我忘了更改:),@JamesS是的,它确实会添加到列表中,但索引页对it@TheProgrammer我可能会看看下面亨克特曼的答案。问题可能是因为它不是一个静态列表,所以每次调用控制器时它都会重置。编辑确实有效!非常感谢。但是有什么更好的方法呢?我很好奇:)数据库是正常的存储。这取决于你想保存数据的时间。啊,好吧,是的,我首先想在没有数据库的情况下学习它。然后稍后添加一个:)
<div class="row">
<div class="col-md-4">
    <form asp-action="Create">
        <div class="form-group">
            <label asp-for="Id">Id:</label>
            <input asp-for="Id" type="text" class="form-control" name="id" />
        </div>
        <div class="form-group">
            <label asp-for="Name">Naam:</label>
            <input asp-for="Name" type="text" class="form-control" name="name" />
        </div>

        <div class="form-group">
            <label asp-for="Category">Categorie</label>
            <select class="form-control" asp-for="Category">
                <option value="0">none</option>
                <option value="0">Cake</option>
                <option value="0">Desert</option>
                <option value="0">Sidedish</option>
                <option value="0">Maincourse</option>
            </select>
        </div>
        <div class="form-group">
            <label asp-for="NumberOfIngredients">Aantal</label>
            <input asp-for="NumberOfIngredients" type="number" class="form-control" name="number" />
        </div>
        <button type="submit" class="btn btn-primary">Voeg toe</button>
    </form>
</div>
public class RecipeController : Controller
{
    List<RecipeViewModel> vm = new List<RecipeViewModel>();
static List<RecipeViewModel> vm = new List<RecipeViewModel>();