在视图中使用 viewbag

Using viewbag in view

在我的控制器中,我创建了一个名为 OptionList 的 viewbag 属性,我在其中创建了一个字符串,其中包含我想在我的视图中使用的选择器的一些选项。

foreach(Uren_IssueType type in IssueType_List)
{
    optionList = optionList + "<option>" + type.TypeNaam + "</option>";
}
ViewBag.OptionList = optionList;

因为它是一个动态创建的选择器(它是网格中每一行的一部分,可以在其中动态添加和删除行)我想将此选项列表添加到创建选择器的字符串中。

<td width=\"125\">
    <select class=\"form-control\" id=\"selectpicker\" name='selectpicker'>
         @ViewBag.OptionList
    </select>
</td>

但此代码确实有效,只是不显示选项。它显示一个空的下拉列表。有人可以帮助我如何从 viewbag 字符串创建这个选择器列表吗?

您需要遍历 viewbag 中的项目。 类似于:

<td width=\"125\">
    <select class=\"form-control\" id=\"selectpicker\" name='selectpicker'>
    @foreach(var item in ViewBag.OptionList)
    {
        <option value="@item">@item</option>
    }         
    </select>
</td>

并且 ViewBag 应该像这样创建:

List<string> items=new List<string>();
foreach(Uren_IssueType type in IssueType_List)
{
    items.Add(type.TypeNaam)   
}
ViewBag.OptionList = items;

要从字符串中呈现 Html,请使用 Html.Raw

@Html.Raw(@ViewBag.OptionList)

但是,更多 Asp.Net MVC 方法是 using DropdownList(或 DropDownListFor)从模型中渲染某些东西,而不是在字符串中构建 HTML。