2016-03-28 19 views
0

Orchard'ın "Kullanıcı ekle" sayfası nasıl yüklendiğini anlamaya çalışıyorum. MVC hakkında biraz bilgim var. Yönetici \ Create.cshtml"Yeni kullanıcı ekle" sayfası nasıl yükler

\ Görünümler \

.. \ Orchard.Web \ Modülleri \ Orchard.Users:

kullanıcı ana sayfa ekle: Bu sayfada yüklemek parçalardır kullanıcı bölümünü oluşturun: .. \ Orchard.Web \ Modülleri \ Orchard.Users Görünümler \ \ EditorTemplates parça \ \ User.Create.cshtml

Roller kısmı: .. \ Orchard.Web \ Modülleri \ Ork hard.Roles \ Görüntüleme \ EditorTemplates Parçaları \ Roles.UserRoles.cshtml

Kaydet düğmesi \: .. \ Orchard.Web \ Çekirdek \ İçindekiler \ Content.SaveButton.cshtml

\ Görüntüleme

Benim sorum Bu ayrı parçalar nasıl tek bir sayfada birleştirilir? Bunu yapmak için hangi sınıf sorumludur?

enter image description here

+0

kodunuz bunun için sorumludur. –

+0

Bu soruyu sormamın nedeni, Orchard’a dayanan Coevery CRM’de çalışıyorum. Ancak, Coevery için, kodda aynı parçalar olmasına rağmen Kaydet düğmesi gösterilmez. Bu yüzden, Kaydet düğmesinin neden yüklenmediğini öğrenmek için sayfa bölümlerinin nasıl yüklendiğini anlamaya çalışıyorum. – user3340627

+0

kodunuza bakmadan söylemek zor. Bazı sayfaların oluşturulmasını değiştirmek için sayfanın içinde bazı koşullar olabilir. –

cevap

1

Bunlar ayrı parçalar sorumlu Sürücüler parçaların tarafından birleştirilmiştir. Bu sürücüler, o parça ile birlikte gelen şekilleri oluşturmaktan sorumludur. Örneğin, SaveButton Orchard.Core içinde ContentsDriver işlenir/İçerik/Sürücüler/ContentsDriver:

protected override DriverResult Editor(ContentPart part, dynamic shapeHelper) { 
    var results = new List<DriverResult> { ContentShape("Content_SaveButton", saveButton => saveButton) }; 

    if (part.TypeDefinition.Settings.GetModel<ContentTypeSettings>().Draftable) 
     results.Add(ContentShape("Content_PublishButton", publishButton => publishButton)); 

    return Combined(results.ToArray()); 
} 

sürücüler şekillerin render, sürücülerin kapalı Kickin düzenlenmesi sorumlu olmakla birlikte olan placement.info aracılığıyla yapılır (bkz Orchard.Core/İçerik/Placement.info):

<Placement> 
    <Place Content_SaveButton="Sidebar:23"/> 
</Placement> 

yerde ise (bir modül veya bir tema) savebutton görüntülenen gerektiğini, muhtemelen yapılacaktır tanımlanır placement.info aracılığıyla. Muhtemelen böyle bir şey yazan yere yere aramak gerekir: o SideBar bölgesinde kaydet düğmesini işlemek gerektiğini söylüyor çünkü

<Placement> 
    <!-- This will cause the savebutton not to render --> 
    <Place Content_SaveButton="-"/> 
</Placement> 

Veya kullanıldığı bazı alternatif değil o olabilir YanBar bölgesini görüntülemek (@Display(Model.SideBar))

+0

Detaylı açıklamanız için çok teşekkür ederim. Ben Coevery hata ayıklandı ve @Display (Model.SideBar) yüklü olmadığını söylediğin gibi ortaya çıktı. Bu satır bir .cshtml sınıfı Content-user.Edit.cshtml içinde, Orchard'da oluşturulur, ancak Coevery'de değil. Şimdi bir sonraki adımın bu şablonun neden işlenemediğini anlayacağını tahmin ediyorum. – user3340627

İlgili konular