Quantcast
Channel: Фамильный Теремок - ASP.Net
Viewing all articles
Browse latest Browse all 3

Orchard CMS: представление для динамического типа

$
0
0

Извиняюсь за зубодробительный заголовок.
Хотел бы поделиться с коллегами решением (возможно велосипедным, потому как штатного метода решения подобных вопросов я могу просто не знать).

Сперва предисловие для незнакомых с Orchard CMS

Это система базирующаяся на MVC.NET и как у любого MVC, у неё имеется модель, представление и контроллер, для всего чего угодно почти.
Есть у Orchard и много дополнительных сущностей, но не в том суть дела.
А дело в том, что правильно задав имя представления, можно подменять уже существующие представления. Как именно это делать, кстати рассказано вот в этой статье (eng)

А ещё в Orchard почти всё является контентом и может быть обработано и выведено на экран штатными средствами. Контент бывает Content Part и Content Field, но это тоже не важно, а важно, что контент можно создавать как в коде, путём написания собственных модулей описывающих те самые модели, контроллеры и др. обвеску, так и из панели управления - в визуальном режиме добавляя, настраивая и комбинируя те или иные поля и части контента.

Когда мы совмещаем обе части вышеописанного и пытаемся создать собственное представление для некого типа определённого в коде и имеющего соответственно модель, то ни каких проблем - мы используем эту самую модель для доступа к полям той части контента, для которой рисуем представление.

Когда же мы пытаемся проделать то-же самое для типа созданного из панели управления, то обнаруживается, то у него собственно нет модели - соответствующий объект является динамическим типом! 

Итак, задача: создать альтернативное представление для определённого из панели управления контентного типа. 

После некоторых изысканий, наметился нижеописанный путь решения проблемы выковыривания данных о наличных объектах и некторой типизации модели. 
Соответственно в cshtml файле мы пишем нижеследующий код и имеем словарик с данными и метаданными объектов модели.

@using Orchard.ContentManagement;
@{
    IEnumerable<dynamic> items = Model.Content.Items;

            var fields = items.ToDictionary(it => it.ContentField.Name, it => 
                new{
                    ContentField = (Orchard.ContentManagement.ContentField)it.ContentField
                });    
}

.


Viewing all articles
Browse latest Browse all 3

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Ang Nobela sa “From Darna to ZsaZsa Zaturnnah: Desire and Fantasy, Essays on...


Lola Bunny para colorear


Winx Club para colorear


Girasoles para colorear


Dibujos de animales para imprimir


Renos para colorear


Dromedario para colorear


Long Distance Relationship Tagalog Love Quotes


Tagalog Long Distance Relationship Love Quotes


RE: Mutton Pies (mely)


Gwapo Quotes : Babaero Quotes


Kung Fu Panda para colorear


Libros para colorear


Mandalas de flores para colorear


Dibujos para colorear de perros


Toro para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Love Quotes Tagalog


Tagalog Love Facts About Men


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC