Иногда на страницах я должен показывать некоторые данные из атрибутов различных свойств объекта.Когда у меня есть класс
class A
{
[CustomAttribute("See me!")]
public int B{get;set;}
}
и я хочу показать данные из своего пользовательского атрибута, я могу использовать что-то вроде
static string TitleFor<TClass, TProp>(TClass model, Expression<Func<TClass, TProp>> expression)
, и это работает хорошо.Но когда я хочу превратить его в Html-помощник, например,
static MvcHtmlString TitleFor<TClass, TProp>(this HtmlHelper htmlHelper, TClass @object, Expression<Func<TClass, TProp>> expression)
и использовать его
@Html.TitleFor(default(A), (x) => default(A).B)
Я получаю сообщения об ошибках типа ошибка CS1061: «HtmlHelper» не содержит определения для «TitleFor», и нет доступного метода расширения «TitleFor», принимающего первый аргумент типа «HtmlHelper» (вы пропустили директиву using или ссылку на сборку?) where CurrentPageModel - класс, используемый в качестве модели на этой странице.
Как это сделать правильно?
Обновление: добавлено ключевое слово public
в мою функцию, но это не сильно помогает - теперь я получаю CS0117: «HtmlHelper» не делаетсодержит определение для 'TitleFor'
Обновление 2: хотя .DisplayFor частично удовлетворял мои потребности, я все еще не могу сделать что-то подобное для объекта, отличного от модели.C # не позволяет осуществлять доступ к элементам, как C ++ позволяет с оператором ::
, что снижает наши возможности доступа к метаданным.