2009-10-26 3 views
1

Je voudrais faire quelque chose comme ce qui suit avec étincelle.Comment créer dynamiquement une vue d'étincelle compilée?

<viewdata model="IList[[string]]" /> 

<for each="var file in Model"> 
<use import="${file}" /> 
</for> 

Ceci, cependant, ne fonctionne pas parce que Spark n'évalue pas la ${file} avant d'essayer l'importation. Cela a du sens et je pensais que ça ne marcherait pas, mais comment pourrais-je faire quelque chose comme ça.

Remarque: Le modèle est une liste de noms de fichiers.

Répondre

0

Vous pouvez toujours utiliser Html.RenderPartial():

<viewdata model="IList[[string]]" /> 

<for each="var file in Model"> 
    <% Html.RenderPartial(file); %> 
</for> 

Edit:

Je ne crois pas qu'il y ait beaucoup mieux, mais si vous ne vraiment RenderPartial pas écrire, vous pouvez le faire une fois. Vous devez créer _useview.spark:

<viewdata file="string"/> 
<% Html.RenderPartial(file); %> 

puis l'utiliser comme ça:

#var views = new string[] { "View1", "View2" }; 
<for each="string file in views"> 
    <useview/> 
</for> 
+0

qui fonctionne. Nous avions déjà compris cela, mais nous nous demandions s'il y avait un moyen de le faire avec Spark spécifiquement. Si je ne reçois pas de meilleures réponses en utilisant Spark, je vous marquerai comme la réponse. Merci de nous avoir envoyé! –

+0

Est-ce que ce hack avec une balise useview vide fonctionne vraiment? De ce que je vois dans les groupes google spark, tous les points de vue sont réunis au moment de la compilation. Ils ne suggèrent rien d'autre que RenderPartial. – queen3

+0

Cela fonctionne. C'est la même chose que la solution supérieure, mais RenderPartial est déplacé en vue partielle. pour chaque variable 'fichier' est visible dans la portée de '_useview'. Le code de vue généré par Spark est le même dans les deux solutions. – LukLed

Questions connexes