Для метода ValidationMessageFor
требуется вспомогательный вспомогательный тип html. Таким образом, ваш метод должен выглядеть примерно так:
Public Shared Function Asistente(Of TModel, TProperty)(helper As HtmlHelper(Of TModel), expression As Expression(Of Func(Of TModel, TProperty))) As HtmlString
Return helper.ValidationMessageFor(expression)
End Function
Это позволит вам использовать это расширение для любой модели, и ваш звонок не изменится. Я не совсем уверен в том, что вы спрашиваете.
**@Html.Asistente(Function(model) model.Numero)**
(обратите внимание, что vb был создан с использованием конвертера c # в vb - но это выглядит правильно)
Если вы хотите использовать первый пример, который вы разместили, вам нужно написать что-то вроде этого:
Public Shared Function Test(Of T As User)(helper As HtmlHelper(Of T), model As T) As HtmlString
Return helper.ValidationMessageFor(Function(f) f.Name)
End Function
Тем не менее, это особый вариант использования, потому что если вы не принудительно зададите тип модели для определенного типа, вы не увидите свойства лямбда-выражения и, следовательно, не скомпилируете.