使用ViewBag的Asp.net mvc下拉列表

时间:2017-09-21 10:13:57

标签: c# asp.net asp.net-mvc drop-down-menu

我在db中的表格包含字段:IdOrganisationInfo

我想要像这样制作下拉列表:

<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')

我如何构建下拉列表?

5 个答案:

答案 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可用的重载列表:

https://msdn.microsoft.com/en-us/library/system.web.webpages.html.htmlhelper.dropdownlist%28v=vs.111%29.aspx?f=255&MSPPError=-2147217396

答案 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本身需要

  • 填充DropDownList的列表
  • 值(&#34; Id&#34;)
  • 文字(&#34;姓名&#34;)

作为参数。

答案 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"))