创建Html.下拉列表从模型

本文关键字:模型 下拉列表 Html 创建 | 更新日期: 2023-09-27 18:10:48

我需要在我的mvc应用程序中创建一个发票函数。我有这个模型类:

public class Product
{
    public int ProductId { get; set; }
    public int SupplierId { get; set; }
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public double costPrice { get; set; }
    public string ProductPicUrl { get; set; }
    public ProductCategory Category { get; set; }
    public Supplier Supplier { get; set; }
}

1。我需要让我的视图显示所有产品(特别是所有产品名称)的下拉列表,而不使用ViewData2. 我需要能够单击一个按钮,转到我的AddToInvoice控制器方法。我只是不确定如何使它从下拉列表中拉出productid并将其发送给方法。

有人能帮忙吗?即使只是解释如何制作下拉列表?

创建Html.下拉列表从模型

我通常创建一个视图模型,其中既包含我想要创建或更新的模型,也包含为特定字段获取数据源所需的项列表。在这种情况下,我将创建一个名为SelectProductModel的视图模型,它包含一个ProductId属性和一个Products属性。

public class SelectProductModel
{
  public Int32 ProductId { get; set; }
  public IEnumerable<Product> Products { get; set; }
}

Invoice控制器中,我只需加载产品列表并将其存储在模型中:

public ActionResult SelectProduct()
{
  SelectProductModel model = new SelectProductModel();
  model.ProductId = -1;
  model.Products = productRepository.GetList();
  return View();
}
public ActionResult AddToInvoice(Int32? id)
{
  //id is the ProductId sent
}

SelectProduct视图将是基于此模型的类型化视图:

@model SelectProductModel
...
@using(Html.BeginForm(actionName="AddToInvoice", controllerName="Invoice", method=FormMethod.Post))
{
  @Html.DropDownListFor(m => m.ProductId, new SelectList(model.Products, "ProductId", "Name"))
}