如何将FubuMVC的DisplayFor与模型上的子列表项目一起使用?



假设我有下面的视图模型。

public class CustomerListViewModel {
  public IEnumerable<CustomerViewModel> Customers { get; set; }
}
public class CustomerViewModel {
  public string FirstName { get; set; }
  public string LastName { get; set; }
  public string Email { get; set; }
  public int Age { get; set; }
}

我想在for each循环中的视图中显示客户列表。我还想使用DisplayFor来显示应用了约定的值(而不是只按原样输出属性:customer.Age)。在ASP.NET MVC中,我过去只忽略表达式中的lambda变量(这个问题的提问者也发现了类似的情况)。

<% foreach (var customer in Model.Customers) { %>
  ...
  <li><%: this.DisplayFor(m => customer.Age) %></li>
<% } %>

然而,如果我这样做,我会在FubuMVC中遇到一个错误。

无法将"System.Reflection.RtFieldInfo"类型的对象强制转换为类型"System.Reflection.PropertyInfo".

我必须使用partial来适当地为每个客户呈现DisplayFor吗?

提前感谢!

在显示的特殊用途中:

<%: this.DisplayFor(m => customer.Age) %>

重载正在查找一个引用m的成员的表达式。此处使用"customer"是导致反射异常的原因。

这里还有一个额外的过载:https://github.com/DarthFubuMVC/fubumvc/blob/master/src/FubuMVC.Core/UI/FubuPageExtensions.cs#L229

这个可以明确指定模型类型和实例:

<%: this.DisplayFor<Customer>(customer, c => c.Age) %>

最新更新