我想将Drop Down List html控件添加到网页中,并将其填入产品列表中。我的Action控制器看起来像
public ActionResult Index()
{
return View(_repository.GetProducts(true));
}
产品型号(Linq to SQL,下面是部分类,其中SelectedId用于下拉选择ID)
public partial class Product
{
public int SelectedId { get; set; }
}
视图是
@model IQueryable<Entity.Product>
@Html.DropDownListFor(.....)
我不明白如何使用Products填充DropDownList,如果选择了产品将Id绑定到SelectedId属性。
答案 0 :(得分:4)
你可以像这样实现这个
在你的模型中你需要这样的东西
public class TestViewModel
{
public int IdSelected { get; set; }
public IEnumerable<Person> People { get; set; }
}
在你的控制器中你需要这样的东西
public ActionResult Index()
{
var people = new List<Person>
{
new Person {Id = 1, Name = "krystan"},
new Person {Id = 2, Name = "Bobby"}
};
var theModel = new TestViewModel
{
People = people.Select(x => new Person
{
Id = x.Id,
Name = x.Name
})
};
return View(theModel);
}
然后在你的html中(根据所使用的视图引擎而略有不同,但我们假设是剃须刀)你需要这样的东西
@model MvcApplication3.Models.TestViewModel
@Html.DropDownListFor(x=>x.IdSelected, new SelectList(Model.People, "Id", "Name"))
可以找到更多信息on this site here
答案 1 :(得分:0)
定义视图模型:
public class MyViewModel
{
public int SelectedId { get; set; }
public IEnumerable<Product> Products { get; set; }
}
让您的控制器操作填充此视图模型:
public ActionResult Index()
{
var model = new MyViewModel
{
Products = _repository.GetProducts(true)
}
return View(model);
}
并在您的视图中使用视图模型生成下拉列表:
@model MyViewModel
@Html.DropDownListFor(
x => x.SelectedId,
new SelectList(Model.Products, "ProductId", "ProductName")
)
其中ProductId
和ProductName
显然是Product
域模型的2个属性,用于分别绑定下拉列表中每个<option>
的值和文本
答案 2 :(得分:0)
下面是使用HTML下拉列表的语法
@Html.DropDownList(
string name,
IEnumerable<SelectListItem> selectList,
string optionLabel,
object htmlAttributes)
使用此选项用产品填充DropDownList。
另外,对于所有其他疑问,请参阅this link
答案 3 :(得分:0)
1)创建将按以下方式返回SelecteListItem的IEnumerbale列表的函数
public IEnumerable<SelectListItem> GetProducts()
{
List<Product> ProductList = new List<Product>();
//Here linq query to fetch products
return ProductList.Select(c => new SelectListItem
{
Value = c.Id,
Text = c.ProductName //Or whatever you want to display
});
}
2)以控制器方式存储到Viewbag
public ActionResult Index()
{
ViewBag.ProductList = GetProducts()
return View();
}
3)将其绑定在目标视图中,如下所示
@Html.DropDownList("Id", (IEnumerable<SelectListItem>)ViewBag.ProductList, "--Select--")
在上面,Id是Model的项目,您将用它来绑定此视图,它会考虑值项目来存储数据,而“--Select--用于默认值。