У меня есть список объектов, каждый из которых имеет список атрибутов.
В сетке, отображающей список объектов, я должен показываться как атрибуты в виде столбцов, а не показывать их в подсетке.
public class MyObject {
public int Id {get; set;}
public string Name {get; set;}
public IEnumerable<MyAttribute> Attributes {get; set;}
}
public class MyAttribute {
public int Id {get; set;}
public string Key {get; set;}
public string Value {get; set;}
}
Итак, у меня есть IEnumerable<MyObject>
. например
var lst = new[]
{
new MyObject
{
Id = 1,
Name = "o1",
Attributes = new[]
{
new MyAttribute
{
Id = 1,
Key = "k",
Value = "v1"
},
new MyAttribute
{
Id = 2,
Key = "x",
Value = "v2"
},
}
},
new MyObject
{
Id = 2,
Name = "o2",
Attributes = new[]
{
new MyAttribute
{
Id = 3,
Key = "k",
Value = "v11"
},
new MyAttribute
{
Id = 4,
Key = "x",
Value = "v22"
},
}
}
};
И сетка, на которой я хотел бы закончить, имела бы 4 столбца: Id, Name, k, x.
У меня 2 проблемы ...
Компонент, который я использую для отображения сетки, использует ModelMetadataProviders.Current.GetMetadataForType((Func<object>) null, typeof (TModel))
, чтобы выяснить, какие столбцы показывать. Как мне убедить провайдеров ModelMetadata включить эти дополнительные столбцы?
Аналогично, код для получения значений ModelMetadataProviders.Current.GetMetadataForProperties(this.Value, typeof (TModel))
, как мне убедить его отправить эти дополнительные значения?
Если я найду решение для второй проблемы, я, вероятно, найду обходной путь для первой, поскольку это всего лишь вспомогательный класс.