我正在构建一个带有表达式的自定义 HTML 帮助程序来绘制标签云,其中进入标签云的数据来自表达式。我会让代码在这里说话:
查看模型
public class ViewModel
{
public IList<MyType> MyTypes { get; set; }
public IList<MyOtherType> MyOtherTypes { get; set; }
}
看法
<div>
@Html.TagCloudFor(m => m.MyTypes)
</div>
<div>
@Html.TagCloudFor(m => m.MyOtherTypes)
</div>
帮手
public static MvcHtmlString TagCloudFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) where TProperty : IList<MyType> where TProperty : IList<MyOtherType>
{
// So my actual question here is: how do I get my IList<TProperty> collection
// so I can iterate through and build my HTML control
}
我快速浏览了一下并完成了通常的谷歌搜索,但我似乎无法找到具体的答案。我假设它在某个区域,expression.Compile().Invoke()
但我不确定要传递的正确参数是什么。
我还应该提到这一点,MyType
并且MyOtherType
具有类似的属性,Id
但这里没有继承,它们是完全独立的对象,因此我限制了我TProperty
的 asIList<MyType>
和IList<MyOtherType>
. 我是不是走错了路,我觉得这应该很明显,但我的大脑没有在玩。