Использование HTML.Grid для отображения дочернего объекта - PullRequest
4 голосов
/ 30 ноября 2011

У меня есть приложение 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 ]

1 голос
/ 07 декабря 2011

Это работает для меня, может быть, у вас что-то не так в заполнении вашей модели?

1 голос
/ 09 декабря 2011

Поскольку вы используете лямбда-выражение для метода Column.For(), параметр x ссылается на одно электронное письмо.Я думаю, что вы хотите сослаться на Модель, а не на один идентификатор электронной почты

Вместо x.ID, я думаю, что вы просто хотите Model.ID

1 голос
/ 06 декабря 2011

Кажется, это может быть ошибка в WebGrid.Вы пытались переименовать поле идентификатора в классе EmailAddress, например, EmailID и передать его в WebGrid и посмотреть, правильно ли оно отображается?

...