1

我需要在我的 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.我需要在不使用 ViewData 的情况下让我的视图显示所有产品(特别是所有产品名称)的下拉列表 2.我需要能够单击转到我的 AddToInvoice 控制器方法的按钮。我只是不确定如何让它将 productid 从下拉列表中拉出并将其发送到该方法。

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

4

1 回答 1

4

我通常会创建一个视图模型,其中包含我要创建或更新的模型以及为特定字段获取数据所需的项目列表。在这种情况下,我将创建一个名为的视图模型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"))
}
于 2013-04-23T22:41:06.343 回答