Asp.net mvc Razor帮助器为列表中的属性呈现tr

Asp.net mvc Razor帮助器为列表中的属性呈现tr,asp.net-mvc,razor,Asp.net Mvc,Razor,我有大量的数字数据要从复杂对象列表“Dto”中吐出。Dto对象中的每个属性都需要表中的一行,例如 |dtos[0]|dtos[1]|dtos[2]|dtos[4] prop1| w | x | y | z prop2| a | b | c | d 理想情况下,我会叫一个像这样的助手 @RenderTr("prop 1", model.Dtos, x => x.prop1); @RenderTr("prop 2", mo

我有大量的数字数据要从复杂对象列表“Dto”中吐出。Dto对象中的每个属性都需要表中的一行,例如

     |dtos[0]|dtos[1]|dtos[2]|dtos[4]
prop1|   w   |   x   |   y   |   z
prop2|   a   |   b   |   c   |   d  
理想情况下,我会叫一个像这样的助手

@RenderTr("prop 1", model.Dtos, x => x.prop1);
@RenderTr("prop 2", model.Dtos, x => x.prop2);
…它将循环遍历DTO列表,并为每个指定属性吐出td。导致以下html

<tr><td>prop 1</td><td>w</td><td>x</td><td>y</td><td>z</td></tr>
<tr><td>prop 2</td><td>a</td><td>b</td><td>c</td><td>d</td></tr>
prop1wxyz
第2abcd号提案
我已经试着寻找模板剃须刀代表,有趣的助手和表情参数,但不能完全得到我的头周围


更新了问题以使其更有意义。

最好的方法是在HTMLHelper上使用自定义扩展方法-传入行标题、DTO列表和成员表达式,让方法知道您要查找哪个属性

public static MvcHtmlString TableRowForProperty(this HtmlHelper htmlHelper, string rowName, IEnumerable<Financial> modelList, Expression<Func<Financial, decimal>> propertySelector)
{
    var sb = new StringBuilder();
    sb = sb.Append("<tr>");

    sb.Append($"<td>{rowName}</td>");

    foreach (var model in modelList)
    {
        var memberExpression = (MemberExpression)propertySelector.Body;
        var propertyInfo = (PropertyInfo)memberExpression.Member;
        var value = propertyInfo.GetValue(model);
        sb.Append($"<td>{value}</td>");
    }

    sb = sb.Append("</tr>");

    return new MvcHtmlString(sb.ToString());
}
public static MvcHtmlString TableRowForProperty(此HtmlHelper HtmlHelper、字符串行名称、IEnumerable模型列表、表达式属性选择器)
{
var sb=新的StringBuilder();
sb=sb.追加(“”);
sb.追加($“{rowName}”);
foreach(模型列表中的var模型)
{
var memberExpression=(memberExpression)propertySelector.Body;
var propertyInfo=(propertyInfo)memberExpression.Member;
var值=propertyInfo.GetValue(模型);
sb.追加($“{value}”);
}
sb=sb.追加(“”);
返回新的MvcHtmlString(sb.ToString());
}

您可以使其更加通用,但这应该足以开始:)

为模型创建一个
DisplayTemplate
,并使用
DisplayFor(m=>m.YourCollection)
根据模型中的每个项目生成每个
及其
元素collection@StephenMuecke我不认为这会起作用?集合由复杂的对象组成,我需要为每个属性指定一行,每个列由集合中的一个对象填充。当然,它会-这就是
EditorTemplate
的用途