2009-05-11 16 views
12

Acabo de empezar a usar StringTemplate en mi proyecto C#. Revisé la documentación, pero parece que no puedo encontrar una forma de implementar este escenario simple:StringTemplate - ¿Cómo iterar a través de la lista de objetos comerciales y generar html simple?

Tengo una lista de objetos comerciales simples (digamos Pedidos) y los quiero mostrar dentro de una etiqueta UL dentro de mi plantilla html

Por lo tanto, mi plantilla .st se parece a esto (pseudo-código):

<html> some text <ul>[Order template]<li>[Order name here]</li>[/Order template]</ul></html>

y yo quiero que mi salida sea:

<html> some text <ul><li>Order 1</li><li>Order 2</li>...</ul></html>

que no puedo entender cómo hacer que esto funcione usando StringTemplate. ¿Algunas ideas?

+0

Hay un buen puesto que puede ayudarle a: [localizable motor de plantillas de texto con StringTemplate 4] (http://netmvc.blogspot.com/2012/04/localizable-text-template-engine-using_23. html) – Malkov

Respuesta

27

Se debe utilizar la siguiente sintaxis:

<ul> 
    $orders: {order| 
     <li>Order $order.OrderId$</li> 
    }$ 
</ul> 

La documentación acerca de esta característica es muy difícil de encontrar, me encontré con algo de información here (busque el símbolo de canalización |).

+0

Gracias señor, eso resolvió mi problema. –

+0

De nada :) –

0

Eso también funciona para mí. Si llama a StringTemplate desde Antlr como StringTemplateGroup, la sintaxis es un poco diferente. Reemplazar $ con <>.

group DTO; 

assign1(m, attributes) ::= << 
package demo; 
import java.io.Serializable; 

public class <m> implements Serializable { 
    public <m>() { 
     super(); 
    } 

<attributes : {attribute | 
protected <attribute.type> <attribute.name>; 

public <attribute.type> get<attribute.name>() { 
    return <attribute.name>; 
} 

public void set<attribute.name>(<attribute.type> <attribute.name>) { 
    this.<attribute.name> = <attribute.name>; 
} 
}> 
} 

>> 
+0

¿Cómo puedo hacer que funcione si por ejemplo: "attribute.type" devuelve un objeto complejo de tipo "Tipo" de clase. Estoy intentando implementar lo mismo, donde "attribute.type" devuelve un Object "Type", que tiene un atributo "typeName". No puedo recuperar el TypeName. Por favor ayuda !! – AnirbanDebnath

Cuestiones relacionadas