Как использовать DisplayFor от FubuMVC с элементами дочернего списка на модели? - PullRequest
1 голос
/ 29 марта 2012

Предположим, у меня есть модели представлений ниже.

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 я просто игнорировал лямбда-переменную в своем выражении (как это было обнаружено под вопросом этот вопрос ).

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

Однако я получаюошибка с FubuMVC, если я это сделаю.

Невозможно привести объект типа 'System.Reflection.RtFieldInfo' к типу 'System.Reflection.PropertyInfo'.

ДолженЯ использую партиал, чтобы правильно отобразить каждого клиента с помощью DisplayFor?

Заранее спасибо!

1 Ответ

4 голосов
/ 29 марта 2012

В этом конкретном использовании отображения для:

<%: 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) %>
...