Akcja nie jest wykonywana pomimo atrybutu w ASP.NET Core MVC

0

Witajcie. Mam dziwną sytuację. W klasie konstruktora posiadam 2 metody, które są akcjami public ActionResult Edit(int? productId) oraz public ActionResult EditPost(ProductViewModel productVM). Druga metoda posiada też atrybut [HttpPost, ActionName("Edit")], powinna być ona wywołana po wypełnieniu formularza w widoku Edit.cshtml. A nie jest. I do końca nie wiem dlaczego. Żaden breakpoint w EditPost nie jest odpalony. Po wysłąniu formularza po prostu przenosi mnie do Index.cshtml. Może będziecie w stanie mi podpowiedzieć gdzie szukać przyczyny?

@UPDATE:

Metody Edit i EditPost z konstruktora:

    public ActionResult Edit(int? productId)
            {
                if (productId == null)
                {
                    return NotFound();
                }
                var productDb = _context.Products.FirstOrDefault(o => o.ProductID == productId);
                if (productDb == null)
                {
                    return NotFound();
                }
                string[] zmiana = productDb.BradIds.Split(',');
                int[] zmieniony = new int[zmiana.Length];
                for (int i =0; i<zmiana.Length; i++)
                {
                    if (zmiana[i] != "")
                    {
                        zmieniony[i] = Int32.Parse(zmiana[i]);
                    }
                }
                //loading VM
                productVM.ProductID = productDb.ProductID;
                productVM.Name = productDb.Name;
                productVM.Category = productDb.Category;
                productVM.Description = productDb.Description;
                productVM.Price = productDb.Price;
                productVM.ProductIDs = zmieniony;
                productVM.Products = PopulateProducts(); //populating dropdown
                return View(productVM); //returning viewmodel
            }
            //POST 
            [HttpPost, ActionName("Edit")]
            public ActionResult EditPost(ProductViewModel productVM)
            {
                int productId = productVM.ProductID;
                productVM.Products = PopulateProducts();//productVM.Products przybiera to co zwraca dropdown
                if (productVM.ProductIDs != null)
                {
                    Product productDb = _context.Products.FirstOrDefault(o => o.ProductID == productId);
                    if (productDb == null)
                    {
                        return NotFound();
                    }
                    List<SelectListItem> selectedItems = productVM.Products.Where(p => productVM.ProductIDs.Contains(int.Parse(p.Value))).ToList();
                    string tekst = "";
                    foreach (var item in selectedItems)
                    {
                        tekst = tekst + item.Value.ToString() + ",";
                    }
                    productDb.BradIds = tekst;
                    productDb.Name = productVM.Name;
                    productDb.Price = productVM.Price;
                    productDb.Description = productVM.Description;
                    productDb.Category = productVM.Category;
    
                    ViewBag.Message4 = productVM.Name + " " + productVM.Category + " " + productVM.Description;
                    ViewBag.Message3 = tekst; //ok
                    ViewBag.Message = selectedItems.Count.ToString(); //ok
                    _context.SaveChanges(); //!!!!!!
                }
                return View(productVM);
            }

Edit.cshtml:

    @model ProductViewModel
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>Aplikacja</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="~/dist/allstyles.css" />
    </head>
    <body>
        <form asp-action="Index" method="post">
            <input type="hidden" asp-for="ProductID" />
            <div class="form-group">
                <label asp-for="Name">Name</label>
                <input asp-for="Name" class="form-control" />
            </div>
            <div class="form-group">
                <label asp-for="Category">Category</label>
                <input asp-for="Category" class="form-control" />
            </div>
            <div class="form-group">
                <label asp-for="Description">Description</label>
                <input asp-for="Description" class="form-control" />
            </div>
            <div class="form-group">
                <label asp-for="Price">Price</label>
                <input asp-for="Price" class="form-control" />
            </div>
            <div class="form-group">
                <label asp-for="Products">Produkty</label>
                <select asp-for="ProductIDs" class="form-control" asp-items="@Model.Products"></select>
            </div>
            <div class="text-center">
                <button class="btn btn-primary" type="submit">Save</button>
                <a asp-action="Index" class="btn btn-secondary">Cancel</a>
            </div>
        </form>
    
    
        @ViewBag.Message
        @ViewBag.Message2
        @ViewBag.Message3
        @ViewBag.Message4
    </body>
    </html>

ProductViewModel.cs:

public class ProductViewModel
      {
          public int ProductID { get; set; }
          public string Name { get; set; }
          public string Description { get; set; }
          public decimal Price { get; set; }
          public string Category { get; set; }
          //dropdown
          public IEnumerable<SelectListItem> Products { get; set; }
          public int[] ProductIDs { get; set; }
      }
1

Może form asp-action zmień na Edit

1 użytkowników online, w tym zalogowanych: 0, gości: 1