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