2010-09-14 3 views
5

Quelle est la différence entre <%%> et <%:%> dans le contexte du moteur de vue asp.net MVC. Dans le livre MVC2 il est donné comme suit:afficher les balises de code modèle - asp.net mvc - regd

  • <%%> pépites de code d'exécuter du code lorsque le gabarit de vue rend.
  • <%:%> pépites de code exécutent le code contenu dans les et rendent le résultat au flux de sortie du modèle.

Quand utiliser le premier et quand utiliser le second?

Répondre

7

Le livre est presque correct:

<% %> pépites de code d'exécuter du code lorsque le gabarit de vue rend. Donc, si vous mettez un appel à la fonction <div><% MyFunc() %></div> la vous fonction sera exécutée au moment de rendu après balise d'ouverture si div a été rendue, mais avant la balise de fermeture a été rendu. La fonction peut faire tout ce que vous voulez, vérifier certaines conditions et échouent à l'exception, définissez certaines variables, utilisez HttpContext.CurrentContext.Response.Write (ou tout simplement Response.Write à webforms) pour écrire flux de réponse. Les nuggets de code exécutent le code qui y est contenu, puis le résultat html est codé dans le flux de sortie du modèle. i.e. est le même que <% HttpServerUtility.HtmlEncode(HttpContext.CurrentContext.Response.Write(MyFunc()))%>

<%= %> pépites de code exécutent le code contenu dans les et rendent le résultat sans codage html au flux de sortie du modèle. i.e. est le même que <% HttpContext.CurrentContext.Response.Write(MyFunc())%>

--- MyFunc() dans deux cas doit retourner une chaîne. Il peut également s'agir d'une référence à une propriété de ViewModel ou à tout autre nugget de code évalué en chaîne.