【问题标题】:Using viewbag in view在视图中使用 viewbag
【发布时间】:2016-05-11 02:45:58
【问题描述】:

在我的控制器中,我创建了一个名为 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 字符串中创建这个 selectpicker 列表吗?

【问题讨论】:

标签: javascript c# asp.net-mvc asp.net-mvc-3


【解决方案1】:

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

@Html.Raw(@ViewBag.OptionList)

但是,更多的 Asp.Net MVC 执行此操作的方式是 using DropdownList(或 DropDownListFor)从模型中渲染某些内容,而不是在字符串中构建 HTML。

【讨论】:

    【解决方案2】:

    您需要遍历 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;
    

    【讨论】:

    • 我为原始行做了这个。但我使用该字符串能够动态添加新行。并且使用字符串这将不起作用,因为在视图中使用这样的视图包时会给我一个语法错误。但是谢谢你的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2012-08-14
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多