Использование WebGrid для отображения списка адресов электронной почты (строк) — ASP.Net MVC4

Я объявляю WebGrid следующим образом:

@{
    WebGrid grid = null;
    if (Model.EmailAddressesOfChosenClient.Count<string>() != 0)
    {
        grid = new WebGrid(Model.EmailAddressesOfChosenClient, ajaxUpdateContainerId: "gridContent");
    }
}

Затем я пытаюсь визуализировать WebGrid следующим образом, не указывая никаких столбцов:

<div id="gridContent">
@{ if (grid != null)
   {
      @grid.GetHtml()
   }
}
</div>

Мое свойство EmailAddressesOfChosenClient модели — это IEnumerable строк, где каждая строка является адресом электронной почты. Я хотел бы, чтобы WebGrid содержал один столбец с заголовком «Адрес электронной почты», за которым следовали строки адресов электронной почты.

Однако, если я отобразлю это таким образом, мой WebGrid появится с заголовком столбца «Длина», а строки содержат длину каждой строки адреса электронной почты.

Это почему? Как настроить так, чтобы адреса электронной почты показывались в строках и с правильным заголовком столбца? Большое спасибо


person user3041439    schedule 21.01.2014    source источник


Ответы (1)


Это почему?

Потому что, если вы явно не укажете столбцы, помощник использует отражение для проверки общедоступных свойств типа и автоматически создает для них столбец. Таким образом, System.String имеет общедоступное свойство .Length, и поэтому вы получаете для него столбец.

Вам нужно будет использовать пользовательский столбец:

@grid.GetHtml(
    columns: grid.Columns(
        grid.Column("email", format: item => item)
    )
)

В качестве альтернативы вы можете определить модель представления, и ваш IEnumerable<T> будет использовать эту модель представления вместо строки.

person Darin Dimitrov    schedule 21.01.2014
comment
*** ТЫ ЗВЕЗДА *** - person user3041439; 21.01.2014