'daki ModelMetadataProvider'dan gelen nesne örneğini ASP.NET MVC2'ye özel DataAnnotationsModelMetadataProvider
uygulayarak edinin. işlenmiş olan nesne varsayarak ASP.NET MVC
- Contact : IUpdateable
- Name: string
- ContactType: (Lead, Prospect, Customer)
ve aşağıdaki yöntem anlamına Contact.ContactType
bağlamında olduğu:
meta.PropertyName == "ContactType"
meta.ContainerType == typeof(Contact)
meta.Model == ContactType.Lead
(soru :) altında kod
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes,
Type containerType,
Func<object> modelAccessor,
Type modelType, string propertyName) {
var containerInstance = meta.NotSureWhatGoesHere as IUpdateable;
meta.IsReadOnly = containerInstance != null && containerInstance.CanBeUpdated(meta.PropertyName);
}
soru: Nasıl meta verilerinden tokuşu örneğini elde edebilirsiniz? (NotSureWhatGoesHere
'u doğru olanla değiştirin)?
Teşekkürler.
Bu ilginç bir oyun! Daha sonra bir atış verecektir. Teşekkürler. –
Bundan daha karmaşık görünüyor. Bir İfade ağacını geçmek (ve bir parçasını derlemek) ve metada sahip olduğum bilgilere dayanarak kapsayıcıyı bulmanız gerekecektir. Meta, gerekli kapsayıcı örneğini tanımlayabilen kapsayıcı örneği hakkında herhangi bir bilgi sağlamaz (ContainerName ve türü, çoğunu olabildiğince yapmak için yeterli değildir). –
Bu benim için çalıştı. –