我有这个型号:
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:
<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)
但是我收到以下错误: “模板只能用于字段访问表达式,访问属性,维度的数组索引或参数自定义索引器”
有谁能解释一下我在这里做错了什么? 谢谢!
答案 0 :(得分:1)
你应该替换
@Html.EditorFor(model => Model.Ingresos.Where(i => i.ID == item.ID));
与
@Html.EditorFor(item => item);
同样替换
也是个好主意@foreach (var item in Model.Ingresos)
与
@foreach (IngresoProyecto item in Model.Ingresos)
这样就可以正确识别您的模型类型并解决问题。
答案 1 :(得分:0)
在EditorFor模板中,您试图评估一个表达式以产生一个反对使用模板的结果,其中创建一个变量以获得您期望的结果然后传递给编辑器模板。
{
var filteredIngreso = Model.Ingresos.Where(i => i.ID == item.ID);
@Html.EditorFor(model => filteredIngreso);
}