2014-01-27 5 views
0

Я хочу создать дополнительный шаблон редактора для Int32. В ней я хочу, чтобы получить все атрибуты (пользовательские/данных по умолчанию-аннотаций) и делать какую-то работу с ними:Получение атрибутов поля в дополнительном файле EditorTemplate

@model Int32 

@{ 
    string propertyName = ViewData.ModelMetadata.PropertyName; 
    var attributes = ViewData.ModelMetadata.GetSomeHowAllTheAttributesOfTheProperty; 
    SomeWorkWithAttribute(attributes); 

} 
<input type="text" name="@propertyName" value="@ViewData.ModelMetadata.DisplayFormatString" class="form-control"/> 

Таким образом, вопрос, как получить в EditorTemplate все атрибуты объекта недвижимости?

Thx для любого продвижения.

ответ

4

EDIT: первоначальный ответ удалены (не достаточно информации в вопросе):

Так как вам нужно, чтобы получить доступ к пользовательскому атрибуту, я предлагаю следующее:

: если вы просто сохранение некоторых значений, используя пользовательский атрибут, используйте AdditionalMetadataAttribute:

Модель:

[Additional("myAdditionalInfoField", "myAdditionalInfoValue")] 
public int IntProperty { get; set; } 

Вид:

@{ 
    string valueFromAttribute = ViewData.ModelMetadata.Additional["myAdditionalInfoField"].ToString(); 
} 

B: если вы делаете более сложную работу внутри пользовательского атрибута, получить текущее свойство метаданных для вашей модели и сохранить вычисленные значения внутри ViewData.ModelMetadata.Additional словаря. Обратите внимание, что для этого требуется, чтобы вы внедрили свой custom metadata provider.

+0

Вопрос - «Как получить все атрибуты свойства?» – Maris

+0

Извините, я не понял вас полностью. Msgstr "Все атрибуты немного обобщены". MVC «сохраняет» некоторые значения в свойствах метаданных. Например, атрибут «Обязательный» сохраняется в «ModelMetadata.IsRequired» и так далее. Можете быть более конкретными? Другая проблема заключается в том, что вы на самом деле нацеливаете модель, которая является типом значения, а не ссылочным типом. Если это не свойство класса, вы не можете устанавливать атрибуты. Если это свойство класса, вам нужно предоставить экземпляр класса, чтобы вы могли извлекать все «явные» атрибуты с помощью отражения. –

+0

У меня есть атрибут - 'MySomeCustomAttribute' Я хочу быть уверенным, что свойство имеет/не имеет этого атрибута ... – Maris

Смежные вопросы