Использование html.grid для отображения дочернего объекта

StackOverflow https://stackoverflow.com/questions/8331361

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top