2016-10-24 1 views
1

У меня есть форма с именем Account_UserDetails, которую я пытаюсь добавить в какую-то оболочку, потому что она просто отображается как куча LI. Мне нужна обертка вокруг формы, чтобы лучше ее контролировать (например, UL). Я попробовал следующее, но похоже, что он вообще не отображается в браузере. Что я делаю не так?Orchard: добавьте обертку в форму в ShapeTableProvider ShapeTableBuilder

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using Orchard.DisplayManagement.Descriptors; 

namespace Onestop.Themes.LOEH 
{ 
    public class ShapeDataProvider : IShapeTableProvider 
    { 
     public void Discover(ShapeTableBuilder builder) 
     { 
      builder.Describe("Account_UserDetails").OnDisplaying(context => { 
      context.Shape.Wrappers.Add("ul"); 
      }); 
     } 
    } 
} 
+1

Я озадачен тем, почему вы создадите оболочку, чтобы иметь все в теге UL. Разве не проще разместить этот тег в шаблоне для самой фигуры? –

+0

Я не могу получить доступ к самой форме, только Placement.info на уровне темы. –

+0

Почему у вас есть доступ к 'placement.info', но не сможет добавить переопределение шаблона для этой фигуры? –

ответ

1

Упаковщики в Orchard являются формы, вы можете добавить их следующим образом:

builder.Describe("Account_UserDetails").OnDisplaying(context => { 
    context.Shape.Metadata.Wrappers.Add("Account_UserDetails_Wrapper"); 
}); 

Затем следует добавить форму обертку, как Account_UserDetails_Wrapper.cshtml:

<div> 
    @DisplayChildren(Model) 
</div> 

, если вам нужно больше информация об обертках, пожалуйста, обратитесь к этому link

+0

Это то, что я хочу сделать, но не создавая эту форму вообще. Он фактически работает только в том случае, если я добавлю следующее в файл Placement.info: –

+0

Account_UserDetails = "/ Header_Solo_Secondary: 2; Wrapper = ListWrapper" /> –

+0

либо, вы добавляете его в ShapeTableProvider, либо с помощью place.info вы должны создать форму обертки сам – mdameer

Смежные вопросы