Я хочу создать пользовательский помощник HTML, в котором я могу передать выражение LINQ в качестве параметра, например:
@Html.GetBackgroundColor(model => model.RiskAssessment)
Я хочу использовать его для отображения некоторых пользовательских CSS в виде MVC, в зависимости ото том, что такое свойство RiskAssessment.
Итак, я создал вспомогательный метод, подобный этому:
public static string GetBackgroundColor<T, TResult>(this HtmlHelper<T> htmlHelper, Expression<Func<T, TResult>> expression)
{
...
}
Однако, это не скомпилируется, ошибка IEnumerable не содержит определения для RiskAssessment, поэтому я изменил методв
public static string GetBackgroundColor<T, TResult>(this HtmlHelper<IEnumerable<T>> htmlHelper, Expression<Func<T, TResult>> expression)
{
...
}
, который компилируется, так что теперь у меня, вероятно, есть все объекты в коллекции, но я понятия не имею, как получить нужный объект, так как я не могу использовать выражение на IEnumerable, тамМетод Where () недоступен.Я бы подумал, что мог бы сделать что-то вроде этого:
IEnumerable<T> collection = htmlHelper.ViewData.Model;
T obj = collection.Where(expression)
но я просто не знаю, что я делаю здесь неправильно.