2011-08-27 2 views
2

J'utilise certaines méthodes de mon modèle viewdata dans Spark, mais cela ne fonctionne pas correctement. Je pensais que cela fonctionnait auparavant, mais il semble s'écraser. Est-ce que je fais quelque chose de mal dont je ne suis pas conscient?Spark Model Methods plante dans l'instruction IF

 <if condition='model.GetServerRunning()' > 
      <h1><a href="#">IT WORKS</a></h1> 
     </if> 

En outre, plusieurs classes peuvent être utilisées à partir du code dans un fichier Spark, ou ne peut être passé celui <viewdata model="namespace.class">? Je vois des choses sur la documentation de Spark comme <viewdata currentProduct="Product"/> mais je ne comprends pas de quoi il s'agit.

Répondre

1

La Spark déclaration if ci-dessus doit être écrit comme ceci:

<if condition='Model.GetServerRunning()' > 
    <h1><a href="#">IT WORKS</a></h1> 
</if> 

Avis de la capitale 'M' dans Model. Pensez à model et Model comme mots réservés dans Spark, où le premier (minuscule) est utilisé dans une balise <viewdata> pour définir la vue fortement typée, et le second (majuscule) est utilisé comme référence à l'instance de ce type d'objet qui peut être utilisé tout au long de votre vue. Mais une seule instance de Model peut être déclarée par vue.

La deuxième chose que vous mentionnez est le faiblement typé ViewDataobject Dictionary dans MVC2, ou vous pouvez utiliser ViewBag dans MVC3 qui utilise les nouveaux types dynamic. Ce que vous faites dans votre second snippit, est de sortir une instance d'un object appelé Product et de l'assigner à une variable locale appelée currentProduct. De là, vous pouvez l'utiliser comme vous le souhaitez. Cela a seulement été fait pour supporter la construction ViewData fournie avec MVC, pas parce que c'est un bon design. La conception correcte plus largement acceptée serait d'avoir un seul modèle par vue, ce que la syntaxe model fournit. Il ya évidemment des cas limites où vous pouvez utiliser les deux, mais je m'en tiens généralement à un modèle par vue et m'a bien servi sur de nombreux sites, et je ne peux pas dire que j'ai jamais été forcé dans une position où je besoin de remplir le ViewData Dictionary avec des données arbitraires. Si vous le faites, c'est généralement un indicateur d'une odeur dans votre conception de modèle de vue.

L'espoir qui aide,
Rob