• ASP.NET - как просматривать содержимое кеша

    @AigizK Автор вопроса
    Выкладываю свой вариант, вдруг кому пригодится. Реализован на MVC3 Razor. Здесь рассматриваются только те типы, которые мне понадобились, можно расширить добавив DataTable,DataRow и т.д.
    @using System.Collections
    @model dynamic
    @helper ShowEnumerable(dynamic lst)
        {
            foreach (dynamic item in lst)
            {
        @SwitchViewData(item)
            }
    }
    @helper ShowProperties(dynamic item)
        {
            var properties = item.GetType().GetProperties();
     
        <table border="1" cellpadding="0" cellspacing="0">
            @foreach (dynamic property in properties)
            {
                //если это класс сгенерированный Linq2SQL то рассматриваем только колонки с атрибутом [ColumnAttribute]
                //у осатльных рассматриваем все
                var attributes = property.GetCustomAttributes(true);
                bool isColumnAttr = false;
                foreach (var attribute in attributes)
                {
                    if (attribute.ToString().Contains("ColumnAttribute"))
                    {
                        isColumnAttr = true;
                    }
                }
                if (isColumnAttr || attributes.Length == 0)
                {
                <tr>
                    <td>
                        @property.Name
                    </td>
                    <td>
                        @SwitchViewData(property.GetValue(item, null) ?? "")
                    </td>
                </tr>
                }
            }
        </table>
        <br />
    }
    @helper SwitchViewData(dynamic data)
        {
            if (data is string)
            {
        @data<br />
            }
            else
            {
                if (data is IEnumerable)
                {
        @ShowEnumerable(data)
                }
                else if (data.GetType().GetProperties().Length > 0)
                {
        @ShowProperties(data)
                }
                else
                {
        @data<br />
                }
            }
    }
    @SwitchViewData(Model)
    Ответ написан
    Комментировать