MVC3 Razor @ Html.DropDownListFor

use*_*351 26 linq razor asp.net-mvc-3

我可以使用一些帮助实现@ Html.DropDownListFor.我的目标是按类别过滤产品列表.

此代码将显示一个列表框:

@model IEnumerable<Sample.Models.Product>
@{
    List<Sample.Models.Category> list = ViewBag.Categories;
    var items = new SelectList(list, "CategoryID", "CategoryName");

}
@Html.DropDownList("CategoryID", items)
Run Code Online (Sandbox Code Playgroud)

但我@Html.DropDownListFor上班有困难:

@model IEnumerable<Sample.Models.Product>
@{
    List<Sample.Models.Category> list = ViewBag.Categories;
    var items = new SelectList(list, "CategoryID", "CategoryName");

}
@Html.DropDownListFor(???, @items)
Run Code Online (Sandbox Code Playgroud)

我可以使用一些帮助构建Linq部分@Html.DropDownListFor.这是模型:

public class Product
{
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public int CategoryID { get; set; }
    public string QuantityPerUnit { get; set; }
    public Decimal? UnitPrice { get; set; }
    public short UnitsInStock { get; set; }

    public virtual Category Category { get; set; }
}

public class Category
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }

    public virtual ICollection<Product> Products { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 47

您的视图是对一系列产品的强类型,因此我认为您需要为每个产品下拉.如果是这种情况,编辑器模板将起作用:

@model IEnumerable<Sample.Models.Product>
@Html.EditorForModel()
Run Code Online (Sandbox Code Playgroud)

然后在里面 ~/Views/Shared/EditorTemplates/Product.cshtml

@model Sample.Models.Product
@{
    List<Sample.Models.Category> list = ViewBag.Categories;
    var items = new SelectList(list, "CategoryID", "CategoryName");
}
@Html.DropDownListFor(x => x.CategoryID, @items)
Run Code Online (Sandbox Code Playgroud)