mir eine Komponente zu tun, eine Liste zu formatieren, es ist eine Erweiterung, ich den folgenden Code geschrieben, aber, wenn in der Ausführungszeit, es mir die Fehlermeldung gibt:Expression von HelperResult zu formatieren Element aus einer Liste
Cannot convert lambda expression to type 'System.Web.WebPages.HelperResult' because it is not a delegate type
Dies ist die Erweiterung:
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("");
}
Ansicht calling:
var test = Html.FormatMyList<ModelType, ListType>(list, formatExp:
x =>
@<text>
This is format of @x.Cambio to test @x.Fala
</text>);
ich habe bereits versucht, von HelperResult bis d zu ändern Yamamic, aber hat auch nicht funktioniert.
Ich möchte nicht nur Func<object, HelperResult>
wie in einigen Posts in StackOverFlow vorgeschlagen verwenden, weil es Elemente in der <text></text>
, die stark als ein Element von ListType typisiert werden muss.
Das Format kann in meinen Ansichten unterschiedlich sein, daher kann ich keine Vorlage für ListType verwenden.
Gibt es eine Möglichkeit, das zu tun, auch wenn Sie den Ausdruck nicht verwenden?
Dank
Sie haben 'FormatMyList()' als eine Erweiterungsmethode markiert, aber Sie rufen es für kein Objekt auf. Stattdessen verwenden Sie es als statische Methode, was bedeutet, dass einer der Parameter fehlt. –
Sie übergeben 'formatExp' nicht als 'Expression', sondern als 'Func' bereits. –
Es ist eine Erweiterung von HtmlHelper, in der Code of View können Sie sehen: Htm.FormatMyList. Html in diesem Zusammenhang ist es ein HtmlHelper. –