8

我正在开发 MVC4 和实体框架应用程序。我想填充 DropDownList,我想将类别列表绑定到 Dodropdown 列表

IRepository 代码

IList<Category> GetCategory();

存储库

public IList<Category> GetCategory()
    {
        return (from c in context.Categories
                select c).ToList();

    }

控制器

  public IList<Category> GetCategory()
    {
        return icategoryRepository.GetCategory();
    }

之后我卡在这里。如何将数据绑定到 Dropdownlist ?

我的查看代码在这里

<label for="ProductType">Product Type</label>
       @Html.DropDownListFor(m => m.ProductType,new List<SelectListItem>)

我的控制器代码

 public ActionResult AddProduct()
    {
        return View();
    }
4

4 回答 4

6

你可以这样做:

@Html.DropDownListFor(x => x.IdCategory, ViewBag.Categories)

但我建议您避免使用 ViewBag/ViewData 并从您的视图模型中获利:

public ActionResult AddProduct()
{
    var model = new TestModel();

//This is just a example, but I advise you to turn your IList in a SelectListItem, for view is more easy to work. Your List Categories will be like this hardcoded:

model.ListCategories= new SelectList(new[]
{
    new { Value = "1", Text = "Category 1" },
    new { Value = "2", Text = "Category 2" },
    new { Value = "3", Text = "Category 3" },
}, "Value", "Text");

return View(model);

}

在视图中:

@Html.DropDownListFor(x => x.IdCategory, Model.ListCategories)

我希望我有帮助

于 2014-04-11T12:45:11.587 回答
6

使用 ViewBag 怎么样?

看法

<label for="ProductType">Product Type</label>
   @Html.DropDownListFor(m => m.ProductType,ViewBag.ListOfCategories)

控制器

public ActionResult AddProduct()
{
    ViewBag.ListOfCategories = GetCategory();
    return View();
}
于 2013-11-09T13:45:31.400 回答
2

使用ViewBag(正如一些人在其他答案/评论中所建议的那样)从控制器获取数据以查看通常被视为代码异味。

理想情况下,您ViewModel应该包含视图所需的所有数据。因此,使用您的控制器在 ViewModel 的属性上填充此数据:

SelectList ProductTypes { get; set; }

然后将您的下拉列表绑定到此值

@Html.DropDownListFor(m => m.ProductType, Model.ProductTypes)

您可以在这篇文章中找到相同的答案。

于 2013-11-09T14:08:02.550 回答
0

非常简单的代码一步一步 1)在实体框架类中

var productsList = (from product in dbContext.Products
                     select new ProductDTO
                     {
                       ProductId = product.ProductId,
                       ProductName = product.ProductName,
                       }).ToList();

2) 在控制器中

ViewBag.productsList = new EntityFrameWorkClass().GetBusinessSubCategoriesListForDD();

3) 在视图中

@Html.DropDownList("Product_ProductId", new SelectList(ViewBag.productsList , "ProductId", "ProductName"), new { @class = "form-control" })

或者

@Html.DropDownListFor(m=>m.Product_ProductId, new SelectList(ViewBag.productsList , "ProductId", "ProductName"), new { @class = "form-control" })
于 2017-01-16T07:58:02.270 回答