2013-06-27 15 views
6
statik aşağıdaki web formları kodu kullanarak bir sublayout çağırır nasıl benzer Rendering Görünüm çağırmak için herhangi bir yolu olup olmadığını merak ediyorum

:Statik Görünüm Renderings Sitecore içinde 6,6

<sc:Sublayout Path="~/sublayouts/samplesublayouts.ascx" DataSource="SomeItemId" runat="server" /> 

yaptığım denedim Bu: Ben de Sitecore içinde render öğesi oluşturmak ve aldığım ve hata edersiniz çünkü ayrıca Sitecore model öğesi oluşturmak sürece

@Html.Sitecore().ViewRendering("~/renderings/samplerendering.cshtml", new { DataSource= "SomeItemId"}) 

Ama şiddetle görünüm oluşturmayı yazamaz. İçsel oluşturucuları statik olarak yazmak için MVC ile kullanabileceğim benzer şekilde basit bir yöntem olup olmadığını bilmek isterim.

cevap

12

Aşağıda gösterilen yaklaşım, tıraş öğelerinin, oluşturma öğeleri oluşturmadan sunum öğelerine statik olarak bağlı olmasını sağlar. layout.cshtml dosyasında

statik Sitecore bir Görünüm Oluşturma sunum öğesi vardır ve DataSource öğeyi belirtmeyen bir jilet görünümü bağlamak:

StandaloneRendering.cshtml jilet görünümü şöyle
@Html.Sitecore().ViewRendering("/views/StandaloneRendering.cshtml", new { DataSource = "/sitecore/content/Home/My Datasource Item" }) 

:

@using Sitecore.Mvc.Presentation 
@model RenderingModel 

@functions 
{ 
    public Sitecore.Data.Items.Item Item 
    { 
     get 
     { 
      var item = Sitecore.Context.Item; 

      if (!string.IsNullOrEmpty(Model.Rendering.DataSource)) 
      { 
       item = Sitecore.Context.Database.GetItem(Model.Rendering.DataSource); 
      } 
      return item; 
     } 
    } 
} 

<p>Item Name: @Model.PageItem.Name</p>  
<p>Datasource Path: @Model.Rendering.DataSource</p>  
<p>Datasource Item Name: @Item.Name</p> 
<p>Datasource Item Path: @Item.Paths.FullPath</p> 
<p>Datasource Item Template: @Item.TemplateName</p> 

Item Name: Home 

Datasource Path: /sitecore/content/Home/My Datasource Item 

Datasource Item Name: My Datasource Item 

Datasource Item Path: /sitecore/content/Home/My Datasource Item 

Datasource Item Template: Sample Item 
:

sonraki sayfada çıkışını alır 210

Birkaç şey bunu yaparken farkında olmak:

  1. jilet görünümü tarafından dışarı işlenmiş Sitecore alanlar Sayfa Düzenleyicisi'nde düzenlenemez.
  2. StandaloneRendering.cshtml çıktısının bunu Sitecore HTML önbelleğine çıkaracağından şüphe duyuyorum.
  3. @functions bloğundaki Item özelliğinin, birden fazla tıraş makinesi görünümünde yeniden kullanılabilmesi için bazı yerlere taşınması gerekir.
  4. Standart olmayan bir yaklaşımdır. Bu, Sitecore'da ilişkili bir oluşturma öğesi bulmayı bekleyen bazı kişileri karıştırır.
+1

Neden bağımsız bir görüntü oluşturma, karşılık gelen bir öğeyle görüntü oluşturmada çalışmıyor? Ayrıca, sayfa düzenleyicide düzenlenemese bile, kullanılan işleme için ilişkilendirilmiş bir Sitecore öğesi sağlamanın bir yolu yok mu? –

+2

Bu yaklaşımın, traş makinesi dosyasının Sitecore'da bir görünüm oluşturma olarak da ayarlanması durumunda da çalışacağına inanıyorum, örn., Ona yol gösteren bir görünüm oluşturma öğesi vardır. Orijinal yazınızdan, bir veri kaynağı parametresi de alabilen jilet görünümlerini statik olarak çağırmak için hafif bir yoldan geçtiğinizi varsaymıştım. Ne yapmak istediğinizi ve hangi hatayı gördüğünüzü açıklığa kavuşturabilir misiniz, teşekkürler –

+0

Bu, esas olarak ele alınabileceği bir yöntemle inşa edilmiş olsa da, esas olarak aradığım şeyi yapardı. IRenderingModel'i uygulayan bir model tarafından. Glassmapper modellerini kullanarak ve model oluşturma boru hattındaki değişiklikleri kullanarak bunları otomatik olarak kurduk. Bu Görünümler, zaten bir görünüm oluşturma olmaktan çok uzak değildir. Bu nedenle, hedefimize ulaşmak için PartialView'ları kullanabildik. Bu sayede modeli kendimiz de geçirebiliriz ve PartialView sadece normal MVC gibi işleyebilir. – IAreATomKs

İlgili konular