如何将自定义模型下拉列表转换为选择列表

时间:2013-09-01 17:38:59

标签: c# asp.net asp.net-mvc-4 html.dropdownlistfor

我有一个从我的Controller中的呼叫返回的数据集合,用于下拉列表,如下所示:

ViewData["statuses"] = db.GetStatuses();

类型为“YeagerTechModel.Status []”。

当我尝试在简单下拉列表中的视图中列出该数据时,我收到以下错误:

Exception Details: System.InvalidCastException: Unable to cast object of type 'YeagerTechModel.Status[]' to type 'System.Collections.Generic.List`1[YeagerTechModel.Status[]]'

我的观点设置如下:

@using (Html.BeginForm("AddSingleStatus", "Status", new AjaxOptions { HttpMethod = "POST", }))
{
    @Html.ValidationSummary(true)
    <table>
        <tr>
            <td>
                <div class="display-label">
                    @Html.LabelFor(model => Model.Description);
                </div>
                <div class="editor-field">
                    @Html.DropDownListFor(model => Model.Description, new SelectList((List<YeagerTechModel.Status[]>)ViewData["statuses"], "StatusID", "Description"));
                    @Html.ValidationMessageFor(model => Model.Description)
                </div>
            </td>
           </tr> 
        <tr>
            <td>
                <input type="submit" value='@Resources.Add' />
            </td>
        </tr>
    </table>
}

如何才能正确地将该集合转换回简单的下拉列表?

1 个答案:

答案 0 :(得分:1)

而不是将其转换为List<YeagerTechModel.Status[]>,只需将其转换为YeagerTechModel.Status[]即可。数组实现IEnumerable,因此将其传递给SelectList

应该没问题