I want to create an `ActionResult` to add a new record.
I plan to use the [HttpPost] `ProductEdit(Product model)` method.
Question.
How to add a list item to a property of type IEnumerable <T>?
Or how to make this decision simpler?
Product.cs
public class Product { public int ID { get; set; } public string Name { get; set; } public string Description { get; set; } }
MockProduct.cs
public class MockProduct { List<Product> productList; public MockProduct() { productList = new List<Product> { new Product {ID = 1, Name = "Name_1", Description = "Description_1"}, new Product {ID = 2, Name = "Name_2", Description = "Description_2"}, new Product {ID = 3, Name = "Name_3", Description = "Description_3"}, }; } public IEnumerable<Product> ProductList { get { return productList; } set { productList.Add(value as Product); } } }
HomeController.cs
public class HomeController : Controller { MockProduct mckProduct; public HomeController() { mckProduct = new MockProduct(); } public IActionResult Index() { var model = mckProduct.ProductList; return View(model); } public IActionResult ProductEdit() { Product model = new Product(); return View(model); } [HttpPost] public IActionResult ProductEdit(Product model) { // ????? mckProduct.ProductList.Append(model); var v = mckProduct.ProductList; return View(model); }
Edit.cshtml
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @using WebApplCore.Models @model Product <head><link href="~/css/bootstrap.min.css" rel="stylesheet" type="text/css" /></head><h3>*** Edit Page ***</h3><body><div><form asp-controller="Home" asp-action="ProductEdit" method="post" ><input type="hidden" asp-for="ID" /><div asp-validation-summary="All"></div><div><label asp-for="Name"></label><input asp-for="Name" /><span asp-validation-for="Name"></span></div><div><label asp-for="Description"></label><textarea asp-for="Description"></textarea><span asp-validation-for="Description"></span></div><input type="submit" value="Сохранить" /></form></div><script src="~/js/bootstrap.min.js"></script><script src="js/jquery-2.1.4.min.js"></script></body>