Получить данные просмотра от "любого" типа объекта? - PullRequest
0 голосов
/ 06 января 2012

Используя MVC3, я создаю общее частичное представление, которое принимает IList в качестве своей модели, а затем создает таблицу на основе ModelMetaData первого объекта, содержащегося в списке.До сих пор я могу получить отображаемые имена каждой «вещи» в объекте, но я не могу перечислить фактические поля / данные в объекте.Вот что я пробовал:

@model System.Collections.IList

@if (this.Model.IsNullOrEmpty())
{
    <p>No items found.</p>
}
else
{
    <table>
        <thead>
    @{
        ViewDataDictionary<object> viewData = new ViewDataDictionary<object>();
        ModelMetadata metadata = ModelMetadata.FromLambdaExpression<object, object>(m => this.Model[0], viewData);

        foreach (var property in metadata.Properties)
        {
            <th>@property.DisplayName</th>
        }
    }
        </thead>
        <tbody>
    @foreach (var item in this.Model)
    {
        ViewDataDictionary<object> itemData = new ViewDataDictionary<object>(item);

            <tr>
        @foreach (var data in itemData)
        {
                <td>@data</td>
        }
            </tr>
    }
        </tbody>
    </table>
}

Цикл, который создает строки, работает, но в ViewData ничего нет.Мысли?

1 Ответ

1 голос
/ 07 января 2012

Вы можете использовать RouteValueDictionary:

@foreach (var item in this.Model)
{
    RouteValueDictionary itemData = new RouteValueDictionary(item);
    <tr>
    @foreach (var data in itemData)
    {
        <td>@data.Value</td>
    }
    </tr>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...