2016-09-07 1 views
0

Dois-je vraiment marquer chaque ligne avec « @: » quand je suis en train d'évaluer un modèle avec moteur rasoir et que vous voulez juste imprimer le bloc entier contenu à l'intérieur de Si la déclaration:moteur Razor if else

@if(Model.Labels) 
{ 
    @:arcs.append("text") 
    @:.attr("transform", function (d) { 
     @:var c = arc.centroid(d), 
      @:x = c[0], 
      @:y = c[1], 
      @:// pythagorean theorem for hypotenuse 
      @:h = Math.sqrt(x * x + y * y); 
     @:return "translate(" + (x/h * labelr) + ',' + 
      @:(y/h * labelr) + ")"; 
    @:}) 
    @:.attr("dy", ".35em") 
    @:.attr("text-anchor", function (d) { 
     @:// are we past the center? 
     @:return (d.endAngle + d.startAngle)/2 > Math.PI ? 
      @:"end" : "start"; 
    @:}) 
    @:.text(function (d) { return d.data.name; }); 
} 
else 
{ 

} 
+1

Vous pouvez envelopper dans '' si vous avez des problèmes, mais la suppression globale simplement '@:' fonctionnera –

+0

J'ai essayé de supprimer '@:' et il lance une exception. Je vais essayer les balises de texte. – konrad

+0

ajoutant '' travaillé très bien. Je vous remercie! – konrad

Répondre

1

Vous pouvez vérifier un message sur la syntaxe Razor ici: http://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax

En bref, la règle appliquée ici est:

Vous avez un bloc de code - votre « si » - et à l'intérieur de celui-ci, le code est attendu à moins que:

  1. Vous mettez une balise html à l'intérieur. De cette façon, le contenu du bloc "if" sera traité en HTML. Vous utilisez la balise <text></text>. De cette façon, le contenu de la balise text sera rendu comme vous l'avez dit, sans ajouter de balises ou de texte autour de lui, donc pour votre code javascript, il rendra le code que vous avez spécifié.
  2. Votre texte est précédé de @: lexème, qui indique au rasoir que le contenu doit être traité comme du texte/html.

En bref, changer votre code à celui-ci est ce que vous avez besoin:

@if(Model.Labels) 
{ 
    <text> 
     arcs.append("text") 
     .attr("transform", function (d) { 
      var c = arc.centroid(d), 
        x = c[0], 
        y = c[1], 
        // pythagorean theorem for hypotenuse 
        h = Math.sqrt(x * x + y * y); 
      return "translate(" + (x/h * labelr) + ',' + 
        (y/h * labelr) + ")"; 
      }) 
     .attr("dy", ".35em") 
     .attr("text-anchor", function (d) { 
      // are we past the center? 
      return (d.endAngle + d.startAngle)/2 > Math.PI ? 
        "end" : "start"; 
      }) 
     .text(function (d) { return d.data.name; }); 
    </text> 
} 
else 
{ 

} 
3

Pour résumer Razor Syntaxe:

1- Expression en ligne Commencer par le symbole @ pour écrire le code C# ou VB avec le code Html. Exemple:

@VariableName 
@DateTime.Now // Return the current datetime in Razor 
<p> @DateTime.Now </p> 

2- Déclaration multi Bloc de code: Pour écrire plusieurs instructions de rasoir les enferment dans des accolades

`@{ 
    Razor Stmts... 
    }` 

3- Affichage de texte à partir d'un bloc de code (qui est ce que vous demandez)

Vous pouvez utiliser @ ou <text> </text> pour afficher du texte en fonction de vos besoins. Par exemple:

@{ 
var x = DateTime.Now; 
string hello = "Hello Razor!"; 
<text>The date is:</text> @date <br /> 
@message        
}