2010-01-28 8 views
0

Voici une façon dont nous sommes en train de cracher du HTML à notre vue.Cracher HTML avec asp.net mvc

  foreach (var reportGroup in managedReportGroup.CustomerTags) 
      { %> 

       <%= reportGroup.Name %> 

       <% 
      } 

Y at-il quelque chose que je peux faire comme ça? (Cela ne fonctionnera pas pour moi)

 Action<ManagedReportGroups> handlesReportGroup = delegate(ManagedReportGroups managedReportGroup) 
     { 
      foreach (var reportGroup in managedReportGroup.CustomerTags) 
      { 
       Html.Encode(reportGroup.Name);      
      } 
     }; 

La raison serait de réduire les supports aligator et nettoyer mon code.

Merci,

Mike

Répondre

0

Si vous le déplacez vers des vues partielles, vous devrez toujours faire la boucle à l'intérieur du partiel.

Vous pourriez créer des méthodes d'extension Html personnalisées si vous étiez vraiment à plat avec votre premier exemple.

Ou si votre objectif principal est vraiment de réduire « tranches d'alligator », vous pouvez le réduire à deux si vous l'avez fait de cette façon:

<% 
    foreach (var reportGroup in managedReportGroup.CustomerTags) 
    { 
     Response.Write(reportGroup.Name) 
    } 
%> 

Vous pouvez également envisager la Spark View Engine

+0

I'D faites personnellement '%><% = reportGroup.Name%><%' que response.write, mais ils sont effectivement la même chose. Je suppose que c'est juste un goût personnel, je suppose. :) –

+0

Je fais aussi. Mais pour une raison quelconque, Mike veut les éviter. – jessegavin

+0

Pas que je sois mort contre eux. Plus que je voulais vérifier pour voir s'il n'y avait pas un moyen de se débarrasser d'eux: P –

0

Pourquoi ne pas utiliser PartialViews?

foreach (var reportGroup in managedReportGroup.CustomerTags) 
      { %> 

       <% Html.RenderPartial("NamePartialView", reportGroup.Name) %> 

      } 

Ensuite, votre vue partielle peut rendre le nom. Ceci est plus efficace lorsque vous passez le reportGroup à PartialView et laissez ensuite le partialView écrire tout le HTML ou appeler d'autres PartialViews chaque rendu à un niveau plus atomique.