ASP.NET MVC5 - помощник, действующий не по модели - PullRequest
0 голосов
/ 30 ноября 2018

Иногда на страницах я должен показывать некоторые данные из атрибутов различных свойств объекта.Когда у меня есть класс

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 ++ позволяет с оператором ::, что снижает наши возможности доступа к метаданным.

...