Templates can be used only with field access expressions , access properties, array index of a dimension or a parameter custom indexer
我有这个模型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | public class Proyecto { #region Atributos [DisplayName("Código")] public string ProyectoID { get; set; } public string OportunidadID {get;set;} [DisplayName("Nombre")] public string Nombre { get; set; } [DisplayName("Fecha inicio")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString ="{0:d}")] public DateTime FechaInicio { get; set; } public string CodigoCliente { get; set; } public string TipoClienteTelco { get; set; } public string Sector { get; set; } public string AmbitoProyecto { get; set; } public string DescripcionServicio { get; set; } public string TipoServicio { get; set; } public DateTime CierreOperativo { get; set; } [DataType(DataType.Date)] [DisplayFormat(DataFormatString ="{0:d}")] public DateTime FechaCierreTeorica { get; set; } [DataType(DataType.Date)] [DisplayName("Fecha fin")] [DisplayFormat(DataFormatString ="{0:d}")] public DateTime FechaCierreReal { get; set; } public string EnquestaCalidad { get; set; } [DisplayName("Estado")] public Valoracion Estado { get; set; } [DisplayName("Tendencia")] public Valoracion Tendencia { get; set; } public virtual Oportunidad Oportunidad { get; set; } public virtual ICollection<AsientoProyecto> Asientos { get; set; } public virtual ICollection<IngresoProyecto> Ingresos { get; set; } public virtual ICollection<AsignacionProyecto> Asignaciones { get; set; } public virtual ICollection<Tag> Tags { get; set; } public virtual ICollection<Comentario> Comentarios { get; set; } #endregion } |
在我看来,我尝试使用这个 sintax 插入一个 @Html.EditorFor:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <tr> <th>Ingresos</th> @foreach (var item in Model.Ingresos) { if (item.Fecha.Month < DateTime.Now.Month && item.Fecha.Year <= DateTime.Now.Year) { <td>item.Cantidad €</td> } else { @Html.EditorFor(model => Model.Ingresos.Where(i => i.ID == item.ID)); } } </tr> |
我要做的是添加一个输入文本框,用于更新"Proyecto"的 Icollection 的"Ingreso"(我的模型是 Proyecto)
但我收到以下错误:
"模板只能与字段访问表达式、访问属性、维度的数组索引或参数自定义索引器一起使用"
谁能解释我在这里做错了什么?
谢谢!
你应该替换
1 | @Html.EditorFor(model => Model.Ingresos.Where(i => i.ID == item.ID)); |
与
1 | @Html.EditorFor(item => item); |
最好也替换
1 | @foreach (var item in Model.Ingresos) |
与
1 | @foreach (IngresoProyecto item in Model.Ingresos) |
这样您的模型类型应该被正确识别并解决问题。
在 EditorFor 模板中,您尝试评估表达式以产生与使用模板相反的结果,其中创建变量以获得您期望的结果,然后传递给编辑器模板。
1 2 3 4 | { var filteredIngreso = Model.Ingresos.Where(i => i.ID == item.ID); @Html.EditorFor(model => filteredIngreso); } |