我无法将MetadataType附加到应用程序中自动生成的类。我测试了在生成的类中设置Order属性,它工作得很好,但是如果尝试使用另一个类,我以后就无法获得这些属性。
我也已经尝试了here建议的解决方案,但没有成功。
生成的类
[Table(Name = "T_MKT_Product")]
public partial class T_MKT_Product : GlobalSist.DataAccess.Base.BaseEntity
{
[Column(Storage = "_code", DbType = "varchar(20)", IsUnique = true)]
public virtual string Code
{
get { return _code; }
set
{
if (_code != value)
{
OnPropertyChanging("Code");
_code = value;
OnPropertyChanged("Code");
}
}
}
[Column(Storage = "_name", DbType = "varchar(200)")]
public virtual string Name
{
get { return _name; }
set
{
if (_name != value)
{
OnPropertyChanging("Name");
_name = value;
OnPropertyChanged("Name");
}
}
}
[Column(Storage = "_description", DbType = "varchar(200)", CanBeNull = true)]
public virtual string Description
{
get { return _description; }
set
{
if (_description != value)
{
OnPropertyChanging("Description");
_description = value;
OnPropertyChanged("Description");
}
}
}
}然后,我定义了以下类
[MetadataType(typeof(ProductMetaData))]
public partial class T_MKT_Product
{
}
public class ProductMetaData
{
[Display(Order = -1)]
public virtual string Code { get; set; }
[Display(Order = -2)]
public object Name { get; set; }
[Display(Order = -3)]
public object Description { get; set; }
}救命!:)
发布于 2012-03-14 02:21:20
Attribute.IsDefined(currentProp,typeof(DisplayAttribute))仍然为FALSE它必须为False。您可能正在使用自定义代码检查订单!您的问题的答案非常简单:您的自定义代码根本就是错误的。这可能是错误的,因为您假装找到了与methadata类一起添加的属性以及类的所有其他“本机”属性。这是错误的!.Net Clr没有对MetaDataType属性的本机支持!这只是个惯例。这取决于您,验证您的类是否具有MetaDataType,并检索与原始类的属性同名的MetaDataType的属性。我的意思是你必须手工完成这项工作。所有Mvc引擎自动处理的属性都会被处理,这个way...that是Mvc引擎,查看MetaDataType的属性并将它们与原生attributes...You合并,在您的自定义代码中必须做同样的事情。
也就是说,如果您需要手动检索属性的view...instead中的属性,请编写一个自定义MetaDataProvider。元数据提供程序逻辑会自动为您检索所有属性(就像我解释的那样),...you只需指定对每个属性采取的操作。
发布于 2012-01-17 21:43:18
确保在其中定义自动生成的类的命名空间与在其中定义自定义分部类的命名空间相同。例如:
namespace FooBar
{
[Table(Name = "T_MKT_Product")]
public partial class T_MKT_Product : GlobalSist.DataAccess.Base.BaseEntity
{
...
}
}还有你的:
namespace FooBar
{
[MetadataType(typeof(ProductMetaData))]
public partial class T_MKT_Product
{
}
public class ProductMetaData
{
[Display(Order = -1)]
public virtual string Code { get; set; }
[Display(Order = -2)]
public object Name { get; set; }
[Display(Order = -3)]
public object Description { get; set; }
}
}https://stackoverflow.com/questions/8859453
复制相似问题