使用循环创建多个下拉列表以使用不同的列表

时间:2019-04-23 17:28:46

标签: c# asp.net-mvc

我正在尝试为这样的组件创建多个下拉列表:

if (Model.FilaChamado.CamposComboBox != null)
    {
        for (var i = 0; i < Model.FilaChamado.CamposComboBox.Count; ++i)
        {
            var lista = Model.FilaChamado.CamposComboBox[i].Itens;
            <div class="row">
                <div class="col-sm-6">
                    <label>@Model.FilaChamado.CamposComboBox[i].Nome</label>
                    @Html.DropDownListFor(x => m => m.CamposPreenchidosComboBox[i], new SelectList(lista), "Selecione", new { @id = "DDLUf", @class = "form-control field" })
                    @Html.HiddenFor(m => m.FilaChamado.CamposComboBox[i].Nome)
                </div>
            </div>

        }
    }

每个dropdownlistfor使用存储在Model.FilaChamado.CamposComboBox[i].Itens中的对象列表。每个对象的定义如下:

 public class ItemCombobox
    {
        public int Id { get; set; }
        public string Descricao { get; set; }
    }

但是我收到“无法从用法推断方法的类型参数”错误:

The type arguments for method 'System.Web.Mvc.Html.SelectExtensions.DropDownListFor<TModel,TProperty>(System.Web.Mvc.HtmlHelper<TModel>, System.Linq.Expressions.Expression<System.Func<TModel,TProperty>>, System.Collections.Generic.IEnumerable<System.Web.Mvc.SelectListItem>, string, object)' cannot be inferred from the usage.

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

尝试使列表只是字符串列表

var lista = Model.FilaChamado.CamposComboBox[i].Itens.Select(i => i.Descricao);

并使下拉列表绑定到字符串

@Html.DropDownListFor(x => m => m.CamposPreenchidosComboBox[i].Name, new SelectList(lista), "Selecione", new { @id = "DDLUf"+i.ToString(), @class = "form-control field" })

请务必注意,@ Id对于每个组合框都应该唯一,尽管我建议不要完全设置它,因为当存在组合框列表时,它可能会与ASP.NET绑定混淆。也许不用@Id。