Robię komponent do sformatowania listy, jest to rozszerzenie, napisałem następujący kod, ale w czasie wykonywania, daje mi błąd:Wyrażenie HelperResult, aby sformatować element z listy
Cannot convert lambda expression to type 'System.Web.WebPages.HelperResult' because it is not a delegate type
jest to rozszerzenie:
public static MvcHtmlString FormatMyList<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, IEnumerable<TValue> list,
Expression<Func<TValue, System.Web.WebPages.HelperResult>> formatExp = null)
{
foreach (var item in list)
{
var itemFormated = formatExp.Compile().Invoke(item).ToString();
}
return new MvcHtmlString("");
}
Zobacz powołanie:
var test = Html.FormatMyList<ModelType, ListType>(list, formatExp:
x =>
@<text>
This is format of @x.Cambio to test @x.Fala
</text>);
próbowałem już zmienić z HelperResult do d ynamic, ale też nie działa.
Nie chcę używać tylko Func<object, HelperResult>
, jak sugerowano w niektórych wpisach w StackOverFlow, ponieważ, będą pozycje wewnątrz <text></text>
, które muszą być silnie wpisane jako element ListType.
Format może być różny w moich widokach, więc nie mogę użyć szablonu do ListType.
Czy istnieje sposób, aby to zrobić, nawet jeśli nie używasz wyrażenia?
Dzięki
Użytkownik oznaczył 'FormatMyList()' jako metodę rozszerzenia, ale nie wywołuje się go na żadnym obiekcie. Zamiast tego używasz go jako metody statycznej, co oznacza, że brakuje jednego z parametrów. –
Przekazujesz 'formatExp' nie jako' Wyrażenie', ale już jako 'Func'. –
Jest to rozszerzenie z HtmlHelper, w kawałku kodu widzenia, można zobaczyć: Htm.FormatMyList. Html w tym kontekście jest to HtmlHelper. –