Вы не можете добраться до самого объекта TModel, не передав его в метод.Выражение, которое вы передаете, говорит только «взять это свойство из TModel».На самом деле он не предоставляет TModel для работы.Итак, я бы изменил код на что-то вроде этого:
public static void AddError<TModel>(
this ModelStateDictionary modelState,
TModel item,
Expression<Func<TModel, object>> expression,
string resourceKey,
string defaultValue)
{
// TModel's instance is accessible through `item`.
}
Тогда ваш код вызова будет выглядеть примерно так:
ModelState.AddError<AccountLogOnModel>(
currentAccountLogOnModel, x => x.Login, "resourceKey", "defaultValue")