我在db中的表格包含字段:Id
,Organisation
,Info
。
我想要像这样制作下拉列表:
<select>
<option value='Id there'>'Organisation there'</option>...
我尝试使用ViewBag:
ViewBag.Organisations = db.Organisations.ToList(); // get all fields from table using dbContext
并在视图中:
@Html.DropDownList('I don`t know what i shoud write here, please help')
我如何构建下拉列表?
答案 0 :(得分:11)
您需要使用SelectList
中的一个在控制器操作中创建constructors,并在视图中将DropDownList方法作为参数传递。
在Controller中执行此操作:
ViewBag.Organisations = new SelectList(db.Organisations.ToList(),"Id","Organisation");
<{1>}在SelectList
中,我们需要指定要用作value
的属性以及在text
标记中用作option
的属性,我们在后两个参数中指定了这些属性。
然后在View中你需要以这种方式使用它:
@Html.DropDownList("Organization",ViewBag.Organisations as SelectList)
此处第一个参数将用作select
元素的名称,第二个参数将用于填充option
select
元素
以下是Html.DropDownList
可用的重载列表:
答案 1 :(得分:2)
我建议您为具有OrganisationId
属性的页面定义ViewModel。因此,在选择组织下拉列表的条目时,将填充此值。
@model BCO.Models.SelectOrganisationViewModel
@{
ViewBag.Title = "OrganisationInfo";
}
<div>
@Html.DropDownListFor(o => o.OrganisationId,
new SelectList(ViewBag.Organisations, "Id", "Name"))
</div>
SelectList本身需要
作为参数。
答案 2 :(得分:1)
您可以按如下方式使用Viewbag中的selectlist
@Html.DropDownListFor(m => m.Name, ViewBag.GetData as SelectList, new { @class = "form-control" })
此处是从控制器填充ViewBag.GetData的, 控制器代码应类似于
ViewBag.GetData = new SelectList(repository.GetOrganisation(), "ID", "OraganizationName");
答案 3 :(得分:0)
控制器
An error occurred during the login
视图
ViewBag.category = new SelectList(db.CategoryMasters.ToList(), "CategoryId", "CategoryName");
JS
<div class="form-group">
@Html.LabelFor(model => model.CategoryId, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<div hidden>@Html.EditorFor(model => model.CategoryId, new { htmlAttributes = new { @class = "form-control", id = "categoryid" } })</div>
@Html.DropDownList("select", ViewBag.category as SelectList, new { @id = "category" })
@Html.ValidationMessageFor(model => model.CategoryId, "", new { @class = "text-danger" })
</div>
</div>
答案 4 :(得分:-2)
@model CURDInMVC.Models.StudentModel
@Html.DropDownListFor(model => model.States,
new SelectList(ViewBag.States, "StateID", "StateName"))