HelperResult的表达式,用于格式化列表中的项

本文关键字:列表 格式化 用于 表达式 HelperResult | 更新日期: 2023-09-27 18:05:14

我正在做一个组件来格式化列表,它是一个扩展,我写了下面的代码,但是,在执行的时候,它给了我错误:

不能将lambda表达式转换为类型"System.Web.WebPages。因为它不是委托类型

扩展名:

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("");
        }

视图调用:

var test = Html.FormatMyList<ModelType, ListType>(list, formatExp:
        x =>
            @<text>
                This is format of @x.Cambio to test @x.Fala
            </text>);

我已经尝试将HelperResult更改为dynamic,但也不起作用。

我不想只使用Func<object, HelperResult>在StackOverFlow的一些帖子中建议的,因为,<text></text>里面会有项目,需要强类型作为ListType的项目。

格式可以在我的视图中不同,所以我不能使用模板来ListType。

是否有办法做到这一点,即使不使用表达式?

谢谢

HelperResult的表达式,用于格式化列表中的项

我做到了,而不是使用表达式Expression<Func<TValue, System.Web.WebPages.HelperResult>>,我只使用了一个Func:

Func<TValue, System.Web.WebPages.HelperResult>

视图:

var test = Html.FormatMyList<ModelType, ListType>(list, format:
        @<text>
                This is format of @item.Cambio to test @item.Fala
            </text>);

我使用了"item"键来访问listtype属性。

使用表达式的唯一原因是访问强类型的属性,因为我可以使用"item"键,我不再需要表达式了。