IEnumerable和TextBoxFor()在视图中不能同时工作

时间:2017-05-09 05:16:43

标签: c# entity-framework model-view-controller

只有在我使用TextBoxFor()时才会出现此问题,而TextBox()没有问题:

@model IEnumerable<DataLayer.MobileMgt.Brand>

@Html.TextBoxFor(a => a.Name, new { @class = "form-control"})

TextBoxFor显示此错误:

  

无法从用法推断出类型参数。尝试明确指定类型参数。

2 个答案:

答案 0 :(得分:1)

您正在传递IEnumerable类型,您必须在没有IEnumerable包装器的情况下传递该对象,因为您尝试与对象强烈绑定。匿名类型将被视为您传递的模型。

 @model DataLayer.MobileMgt.Brand

 @Html.TextBoxFor(a => a.Name, new { @class = "form-control"})

如果您想使用Ienumable执行此操作,可以通过编写如下的foreach来执行此操作,但请确保标识符ID不会重复。

foreach(var item in Model)
{
@Html.TextBoxFor(modelitem => item.Name, new { @class = "form-control"})
}

答案 1 :(得分:0)

由于您的模型是IEnumerable,因此您需要遍历它以获取模型数据。你跟随的方式是错误的。

@for (int i = 0; i < Model.Count(); i++)
{
    @Html.TextBoxFor(a => a[i].Name, new { @class = "form-control"})
}

编辑:

@model IEnumerable<DataLayer.MobileMgt.Brand>更改为@model IList<DataLayer.MobileMgt.Brand>