Использование HTML.Grid для отображения дочернего объекта
У меня есть приложение ASP.NET MVC, которое использует одно представление для отображения свойств и дочерних элементов (с их свойствами) объекта модели.
Моя модель выглядит примерно так:
public class Market
{
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public IList<EmailAddress> EmailAddresses { get; set; }
}
public class EmailAddress
{
public virtual int ID { get; set; }
public virtual int MarketID { get; set; }
public virtual string Email { get; set; }
}
В представлении я хочу использовать таблицу для отображения списка связанных адресов электронной почты. Для этого я использую Html.Grid.
<%= Html.Grid(Model.EmailAddresses).Columns( column =>
{
column.For(x => x.Email + Html.Hidden("ID", x.ID)).Encode(false).Sortable(false);
})
.Attributes(style => "width:100%")
.Attributes(id => "emailGrid")
.Empty("There are no Email Addresses set up") %>
Тем не менее, когда я делаю это, скрытым идентификатором является родительский объект Market, а не EmailAddress.
Как мне исправить это?
3 ответа
Кажется, это может быть ошибка в WebGrid. Вы пытались переименовать поле идентификатора в классе EmailAddress, например, EmailID и передать его в WebGrid и посмотреть, правильно ли оно отображается?
Это работает для меня, может быть, у вас что-то не так в наполнении вашей модели?
Так как вы используете лямбда-выражение для Column.For()
Метод, параметр x ссылается на один адрес электронной почты. Я думаю, что вы имеете в виду, чтобы обратиться к модели, а не один идентификатор электронной почты
Вместо того, чтобы делать x.ID, я думаю, что вы просто хотите Model.ID