MVC - @ Html.Dropdown没有填充ViewBag中的值

时间:2017-07-08 13:58:36

标签: asp.net-mvc html-select

我对MVC很新。

我正在尝试开发MVC网页。我正在尝试使用@HtmlDropDownList(),它必须使用ViewBag填充我的web.config中的值。页面将使用正确的值进行渲染,但是在输出屏幕上,没有输出。下拉列表仅在屏幕上显示空值。有人可以帮忙!

Webconfig代码:

<add key="ddlStreams" value="Las Vegas|India|Australia"/>

控制器代码:

 public ActionResult Index()
        {
            string reportTypes = ConfigurationManager.AppSettings["ddlStreams"].ToString();
            ViewBag.ddlStreamsVB =  reportTypes.Split('|')
                .Select((value) => new SelectListItem { Value = value.ToString() });
            GetData getdata = new GetData();
            return View(getdata.GetDataFromTable());
        }

这是我的观点:

<div >
    <div class="form-control">
        <div class="row">

            <div class="col-sm-4">
                @Html.Label("Stream name")
            </div>
            <div class="col-md-8">
                @Html.DropDownList("ddlStreamsVB1", ViewBag.ddlStreamsVB as IEnumerable<SelectListItem>)
            </div>
        </div>
    </div></div>

单击View source:

时呈现的HTML
<div >
        <div class="form-control">
            <div class="row">

                <div class="col-sm-4">
                    <label for="Stream_name">Stream name</label>
                </div>
                <div class="col-md-8">
                    <select id="ddlStreamsVB1" name="ddlStreamsVB1"><option value="Las Vegas"></option>
<option value="India"></option>
<option value="Australia"></option>
</select>
                </div>
            </div>
        </div>


    </div>

最终输出:( Final output here!!

1 个答案:

答案 0 :(得分:1)

问题是你没有设置SelectListItem的Text prop,更新如下:

ViewBag.ddlStreamsVB =  reportTypes.Split('|')
            .Select((value) => new SelectListItem 
            { Value= value.ToString(),
             Text = value 
            });