我想修改与类别相关的产品,但我不知道如何在编辑视图页面中调用类别表。
以下是我尝试运行的代码:
产品&分类
public class Product
{
public int ProductID {get; set;}
public string Name {get; set;}
public Category Category {get; set;}
}
public class Category
{
public int CategoryID {get; set;}
public string CatName {get; set;}
}
存储库:
public class EFProductRepository : ProductRepository
{
private AppDbContext context;
public EFProductRepository(AppDbContext icr)
{
context = icr;
}
public IEnumerable<Product> Products => context.Products;
public void SaveProduct(Product product)
{
Product dbEntry = context.Products
.FirstOrDefault(p => p.ProductID == product.ProductID);
if (dbEntry != null)
{
dbEntry.Name = product.Name;
dbEntry.Category = product.Category; //Don't know if that's true or not
}
context.SaveChanges();
}
}
控制器代码
public class AdminController : Controller
{
private ProductRepository repo;
public AdminController(ProductRepository rep)
{
repo = rep;
}
public ViewResult Edit(int productID) => View(repo.Products
.FirstOrDefault(p => p.ProductID == productID)
);
[HttpPost]
public IActionResult Edit(Product product)
{
if (ModelState.IsValid)
{
repo.SaveProduct(product);
TempData["message"] = $"{product.Name} saved.";
return RedirectToAction("Index");
}
else
{
return View(product);
}
}
}
我的视图页面,我想在此处添加一个下拉列表以显示类别并保存(int或object?)
@model Product
<form asp-action="Edit" method="post">
<input asp-for="ProductID" />
<div class="form-group">
<label asp-for="Name">Name</label>
<div><span asp-validation-for="Name" class="text-info"></span></div>
<input asp-for="Name" class="form-control" />
</div>
<!-- I want to add categories dropdown list here -->
<div class="text-center">
<button class="btn btn-primary" type="submit">Save</button>
</div>
</form>
答案 0 :(得分:0)
创建一个类似于此
的产品类public class Product
{
public Product(){
category = new List<Category>();
}
public int ProductID {get; set;}
public string Name {get; set;}
public List<Category> category {get; set;}
}
在View Create中就像这样
@{
var list = Model.catlg.Select(x => new SelectListItem { Text =x.catid, Value = x.catid }).ToList();
}
@Html.DropDownListFor(m => m.catlg, list, "-- Select Status --")
答案 1 :(得分:0)