ASP dot net mvc - Добавить элемент в список не работает, ничего не делает - PullRequest
1 голос
/ 07 марта 2019

Я делаю веб-приложение с ASP.net MVC.Вы можете посмотреть рецепты по адресу: / 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");
    }

Что я делаю, у меня есть список RecipeViewModel вверху, и я добавляю созданный элемент в этот список.

Вот RecipeViewModel:

    public class RecipeViewModel
{
    public int Id { get; set; }
    [DisplayName("Naam")]
    public string Name { get; set; }
    [DisplayName("Categorie")]
    public RecipeCategory Category { get; set; }
    [DisplayName("Aantal")]
    public int NumberOfIngredients { get; set; }
}

И вот форма в представлении:

<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>

Поэтому, когда я добавляю рецепт, он возвращается на страницу рецепта, но не показывает добавленный рецепт.Что я делаю не так? Создать страницу рецепта

1 Ответ

1 голос
/ 07 марта 2019
public class RecipeController : Controller
{
    List<RecipeViewModel> vm = new List<RecipeViewModel>();

Ваш список vm является полем экземпляра.Контроллер и список будут создаваться заново при каждом запросе.

Для простого (демонстрационного) решения сделайте его статичным:

static List<RecipeViewModel> vm = new List<RecipeViewModel>();

это не поточно-ориентированное и не подходит для производства в любом случае.Но вы должны быть в состоянии проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...