2016-03-22 22 views
2

Veri kaynağı öğemi görünümüne döndürmek için GetTypeSourceItem Yöntemini kullanarak cam eşleştiriciden veri alıyorum, veri kaynağı boşken kodu hata ayıklayıcısını denetleyicideki kod boş olacak, ancak görünümden değil modelGlassMapper Veri kaynağı ve geçerli madde

benim denetleyicisi eylem:

public ActionResult Callout() 
     { 
      // I didn't fill the datasource in the component 
      // calloutModel value is coming null. 

      var calloutModel= GetDataSourceItem<CalloutModel>(); 
      return View(calloutModel); 
     } 

benim bakış:

, bu ı aşağıdaki kodu kullanıyorum geçerli öğe modelini boş olacak şekilde
@inherits Glass.Mapper.Sc.Web.Mvc.GlassView<CalloutModel> 
// Model is coming the current item in the view (it should be null) 
+0

Glass'ın mvc.getModel boru hattı işlemcisi etkinleştirilmiş mi? –

+0

evet Glass.Mapper.Sc.config –

+0

adresinde Sitecore'da/sitecore/layout/Models altından model oluşturdunuz mu? Model alanında denetleyici oluşturmaya atamanız gerekir. –

cevap

4

Bunun nedeni GlassView taban sınıfından kaynaklanmaktadır. Bu sınıf InitHelpers yöntemini geçersiz kılar ve model boşsa GetModel yöntemini çağırır. Hiçbir veri kaynağı öğesi yoksa, GetModel yöntemi bağlam öğesine geri dönecektir.

Bunu önlemek için, @inherits yönergesini bir @model CalloutModel değerine çevirebilir ve sonra da Düzenlenebilir yöntemlere ve benzerlerine erişmek için @ Html.Glass() yardımcısını kullanabilirsiniz.

+0

düzgün çalışıyor ve düzenlenebilir yöntemi kullanabilirim, ancak görüntüyü "@ Html.Glass() gibi görüntülediğimde. RenderImage (öğe, x => x.Image)" hata alıyorum: "Arama belirsiz Aşağıdaki yöntemleri veya özellikleri arasında: RenderImage " –

+0

Şimdi iyi çalışıyor, iddialı sorundan kaçınmak için tüm parametreleri sağlamalısınız: @ Html.Glass(). RenderImage (öğe, x => x.Image, null, isEditable: true) –