.net核心编辑页面,连接表

时间:2016-12-03 10:49:52

标签: c# asp.net-mvc database razor asp.net-core

我想修改与类别相关的产品,但我不知道如何在编辑视图页面中调用类别表。

以下是我尝试运行的代码:

产品&分类

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>

2 个答案:

答案 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)