我正在尝试为这样的组件创建多个下拉列表:
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.
我在这里想念什么?
答案 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。