我有两个具有此结构的表,这是实体框架数据模型:
public partial class Sensores
{
public int idSensor { get; set; }
public int idTipo { get; set; }
public int idFigura { get; set; }
public string nombre { get; set; }
public virtual TipoSensores TipoSensores { get; set; }
}
public partial class TipoSensores
{
public TipoSensores()
{
this.Sensores = new HashSet<Sensores>();
}
public int idTipo { get; set; }
public string nombre { get; set; }
public virtual ICollection<Sensores> Sensores { get; set; }
}
所以我的元数据类改变了显示名称
[MetadataType(typeof(TipoSensoresMD))]
public partial class TipoSensores
{
}
public class TipoSensoresMD
{
[Display(Name = "Nombre")]
public string nombre { get; set; }
}
当我打电话给
时@Html.DisplayNameFor(model => model.nombre)
在Models.TipoSensores视图中它向我显示“Nombre”。没关系。
但是当我打电话时
@Html.DisplayNameFor(model => model.TipoSensores.nombre)
在Models.Sensores视图中,它还会显示标签文本“Nombre” 我想在使用
时更改显示名称@Html.DisplayNameFor(model => model.TipoSensores.nombre)
到“Nombre del Sensor”但是当我使用
时@Html.DisplayNameFor(model => model.nombre)
在Models.TipoSensores视图中它必须显示“Nombre” 所以...我需要两个不同的显示名称,具体取决于调用属性的位置。
答案 0 :(得分:2)
那是不可能的。显示名称全部或全部。 MVC并不关心如何引用该属性。但是,您可以使用视图模型。从本质上讲,您只需创建一个具有实体中部分或全部属性的类,通常以实体的名称命名为VM
或ViewModel
。所以在这种情况下,可能是TipoSensoresViewModel
。然后,您可以完全自定义该类的显示名称&#39; nombre
属性,并将其用于您的视图而不是您的实体。
唯一缺失的部分是将实体中的数据导入视图模型。您可以手动映射值:
var model = new TipoSensoresViewModel {
nombre = tipoSensoresInstance.nombre
};
或使用像AutoMapper这样的库。
答案 1 :(得分:1)
如何更改默认名称生成列
@ Html.DisplayNameFor(model =&gt; model.NOMBRE_RED)