sto facendo un componente per formattare un elenco, si tratta di un'estensione, ho scritto il seguente codice, ma, quando in tempo di esecuzione, mi dà l'errore:espressione di HelperResult per formattare voce da una lista
Cannot convert lambda expression to type 'System.Web.WebPages.HelperResult' because it is not a delegate type
Questa è l'estensione:
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("");
}
vista chiamante:
var test = Html.FormatMyList<ModelType, ListType>(list, formatExp:
x =>
@<text>
This is format of @x.Cambio to test @x.Fala
</text>);
ho già provato a cambiare da HelperResult a d ynamic, ma non ha funzionato troppo.
Non voglio utilizzare solo Func<object, HelperResult>
come suggerito in alcuni post in StackOverFlow, perché ci saranno degli elementi all'interno dello <text></text>
, che devono essere digitati con forza come elemento di ListType.
Il formato può essere diverso nelle mie visualizzazioni, quindi non è possibile utilizzare un modello per ListType.
C'è un modo per farlo, anche quello che non usa l'espressione?
Grazie
Hai contrassegnato 'FormatMyList()' come metodo di estensione, ma non lo stai chiamando su alcun oggetto. Invece, lo stai usando come metodo statico, il che significa che manchi uno dei parametri. –
Si passa 'formatExp' non come' Expression' ma come 'Func' già. –
È un'estensione da HtmlHelper, nel pezzo di codice di vista, puoi vedere: Htm.FormatMyList. Html in questo contesto è un HtmlHelper. –