MVC / HTML.DropDownListFor / 制作默认选项及其值

MVC / HTML.DropDownListFor / making default option and its value

我在 ProductController 中有 CreateForm 操作。此操作使用带有模型的视图:ProductSupplierViewModel(由产品和列表 Suppliers组成)。

在我的 CSHTML 中我有

@Html.LabelFor(m => m.Product.Supplier)
@Html.DropDownListFor(m => m.Product.Supplier.Id, new SelectList(Model.Suppliers, "Id", "Name"), "", new { @class = "form-control" })

但是,这样我只将我的默认选项设置为空白(通过在 html 帮助程序中使用两个引号)。

我需要知道的是:

  1. 如何将 value="0" 设置为该空白选项?
  2. 如果我们不指定,网络是否有默认值

尝试获取 0,因为在我的 DataAccessLayer 中我有 CreateProduct(Product p) 方法,我将在其中指定:

if(p.Supplier.Id == 0) // from parameter
{ 
  *put NULL value in this DB field*
}

最简单的是:

@Html.DropDownListFor(m => m.Product.Supplier.Id, 
    new SelectList(Model.Suppliers, "Id", "Name", 0),
    "Please Select...",
    new { @class = "form-control" })

这将创建一个默认项“请 Select...”。但是,select 与默认项不同的项目是强制性的。

如果 select 某项不是强制性的,您可以这样做:

控制器

model.Suppliers.Insert(0, new Supplier()
{
    Id = 0,
    Name = "Please Select..."
});

查看

@Html.DropDownListFor(m => m.Product.Supplier.Id, 
    new SelectList(Model.Suppliers, "Id", "Name", 0), 
    new { @class = "form-control" })