创建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并将其发送给方法。
有人能帮忙吗?即使只是解释如何制作下拉列表?
我通常创建一个视图模型,其中既包含我想要创建或更新的模型,也包含为特定字段获取数据源所需的项列表。在这种情况下,我将创建一个名为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"))
}