Использование html.grid для отображения дочернего объекта
-
26-10-2019 - |
Вопрос
У меня есть приложение 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") %>
Однако, когда я делаю это, скрытый идентификатор - это рынок родительских сущностей, а не рынок электронной почты.
Как мне это исправить?
Решение
Кажется, это может быть ошибка в веб -генерации. Пробовали ли вы переименовать поле идентификатора в классе EmailadDress, например, по электронной почте и передать его в веб -грид и посмотреть, правильно ли оно отображается?
Другие советы
Это работает для меня, может ли у вас что -то не так в заполнении вашей модели?
Поскольку вы используете выражение Lambda для Column.For()
Метод, параметр x повторяет одно электронное письмо. Я думаю, вы хотите ссылаться на модель, а не на единый идентификатор электронной почты
Вместо того, чтобы делать x.id, я думаю, что вы просто хотите model.id