2012-06-23 4 views
0

Новое для сада. Я пытаюсь создать пользовательскую форму без успеха. Я также использовал модельер модели. Я создал новый ContentType и добавил поля F1, F2, F3 ... Я создаю CustomForm. Теперь я хочу, чтобы обернуть различные дивы вокруг определенных полей говорятCustom Forms Styling

<div class="g1"> 
f1 
f2 
</div> 
<div class="g2"> 
f4 
f6 
</div> 

КСТАТИ Я попытался это построить без успеха:

 dynamic content = @Model.Content; 
    <div class="g1"> 
     if(@content.ContentTypeName.f1 || @content.ContentTypeName.f2) 
     { @Dispaly(...) 
     } 
    </div> 

Может ли это быть сделано в целях content.edit.cshtml? Если да, укажите пример. Спасибо

Кроме того, есть ли способ отразить свойства Model.Content во время выполнения?

ответ

1

Наконец придумали решение, хотя и весьма некрасиво, но это работает: В моей перемежаются связанной с Content_Edit:

@{ 
    dynamic content = Model.Content; 
} 

<div class="g1"> 
@{ 
    foreach (var item in content) 
    { 
     if (item.Model.GetType().Name == "BooleanField") 
     { 
      if (f.Name == "f1" || f.Name == "f2") 
      { 
       @Display(item); 
      } 
      } 
     } 
} 
</div> 
<div class="g2">   
@{ 
    foreach (var item in content) 
    { 
     if (item.Model.GetType().Name == "BooleanField") 
     { 
      if (f.Name == "f4" || f.Name == "f6") 
      { 
       @Display(item); 
      } 
     } 
    } 
} 
</div> 
1

Обычно в Orchard вы переопределяете шаблоны для частей и полей, а не для всего содержимого. Трассировка формы может помочь вам определить, какие альтернативы шаблонов вы можете использовать для каждого поля, и даже сгенерировать файл с кодом по умолчанию, который вы можете изменить.

Кроме того, Model.Content, если угодно, будет зоной, а не элементом контента. В зависимости от того, какой шаблон вы используете, вы можете использовать Model.ContentItem.

+0

Hi Bertrand- Кажется, мы крутимся по кругу по этому вопросу ... Вопрос: можете ли вы обернуть divs вокруг определенных полей через .cshtml? Если да, пожалуйста, укажите и пример. Спасибо Tony – tonyb206

+0

Это звучит немного грубо. Я не вижу здесь круга. Переопределите шаблон для определенного поля, и вы можете дать ему любую разметку, в которой хотите, включая окружение с помощью div. http://docs.orchardproject.net/Documentation/Accessing-and-rendering-shapes –

+0

@ tonyb206 Пример, вероятно, не нужен. Просто нажмите кнопку в инструменте трассировки формы, чтобы добавить альтернативу. Вы можете прочитать больше об альтернативах в документации. –

2

То, что я сделал было создать локальные зоны в Content_Edit чередуются затем переставить поля используя placement.info

Placement.info:

<Match ContentType="MyForm"> 
    <Place Fields_Input_Edit-FirstField="MyFirstZone:1"/> 
    <Place Fields_Input_Edit-SecondField="MySecondZone:1"/> 
</Match> 

Content.Edit-MyForm.cshtml:

<div class="edit-item"> 
    <div class="edit-item-primary"> 
     @if (Model.Content != null) 
     { 
      <div class="edit-item-content"> 
       <div class="first-zone"> 
        @Display(Model.MyFirstZone) 
       </div> 
       <div class="second-zone"> 
        @Display(Model.MySecondZone) 
       </div> 
      </div> 
     } 
    </div> 
    .... 
</div> 
+0

Это блестяще простой подход, обеспечивающий большую гибкость при оформлении пользовательских форм. Спасибо за совет! – Michael