Использование 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

Другие вопросы по тегам