У меня есть модель, которая выглядит следующим образом:
public class Product
{
[Key]
public int Id { get; set; }
[Required]
public string CatalogId { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Description { get; set; }
[Required]
[EnumDataType(typeof(Category))]
public Category Category { get; set; }
public IEnumerable<Features> Features { get; set; }
}
И у меня есть представление, позволяющее мне создать новый продукт с использованием этой модели.
Для функций яя пытаюсь создать частичное представление, которое позволит мне добавить новый Features
в список, присоединить его к продукту и передать в метод AddNewProduct()
в моем контроллере.
Вот мой AddNewProduct
вид:
@model Product
<div class="card card-admin-main">
<div class="card card-header-admin">
<nav class="navbar navbar-expand-lg navbar-light bg-light" style="background-color: grey !important;">
<a class="navbar-brand" href="/admin">Admin</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="/admin">Overview <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="/admin/products">Products</a>
</li>
</div>
</nav>
</div>
<form asp-action="AddNewProduct">
<br>
<div class="col-md-12">
<div class="row">
<div class="col-md-6">
<a asp-for="CatalogId" >Catalog ID</a>
<input asp-for="CatalogId" class="form-control">
<a asp-for="Name" >Name</a>
<input asp-for="Name" class="form-control">
<a asp-for="Category" >Category</a>
<select asp-for="Category" asp-items="Html.GetEnumSelectList<Category>()" class="form-control">
<option selected="selected" value="">Please select</option>
</select>
</div>
<div class="col-md-6">
<a asp-for="Description" >Description</a>
<textarea asp-for="Description" class="form-control" rows="7"></textarea>
</div>
</div>
<div class="row">
<div class="col-md-6">
@if(Model != null)
{
foreach(var feature in Model.Features)
{
@feature.FeatureTitle
}
}
@await Html.PartialAsync("_AddNewFeaturePartial", new Features())
</div>
</div>
<div class="row">
<div class="col-md-12">
<br>
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
</div>
</form>
Вот мой _AddNewFeaturePartial
@model Features
<form asp-action="AddFeature" asp-controller="Admin" method="POST">
<a asp-for="FeatureTitle">Feature</a>
<input asp-for="FeatureTitle" class="form-control">
<a asp-for="FeatureDescription">Description</a>
<input asp-for="FeatureDescription" class="form-control">
<button type="submit" class="form-control">Add Feature</button>
</form>
А вот мои методы контроллера:
public IActionResult AddNewProduct(Product newProduct)
{
if(newProduct.CatalogId != null)
{
}
return View();
}
[HttpPost]
public IActionResult AddFeature(int id, string FeatureTitle, string FeatureDescription)
{
return RedirectToAction("AddNewProduct");
}
Если я добавлю новыйукажите в форме и нажмите Add new Feature
Никогда не попадет public IActionResult AddFeature(int id, string FeatureTitle, string FeatureDescription
Есть идеи?
Спасибо