2016-09-07 3 views
0

действительно ли я должен отметить каждую строку с «@:» когда я оценивая шаблон с Razor Engine и просто хочу напечатать весь блок, содержащийся внутри, если заявление:двигателя Бритвы, если другое заявление

@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

Вы можете обернуть его в '', если у вас есть проблемы, но в целом просто удаление '@:' будет работать –

+0

Я попытался удалить '@:', и он выдает исключение. Я попробую текстовые теги. – konrad

+0

добавление '' отлично работал. Спасибо! – konrad

ответ

1

Вы можете проверить большое сообщение о Razor синтаксисом здесь: http://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax

Короче говоря, правило применяется здесь:

У вас есть блок кода - ваш «если» - и внутри него код, если только:

  1. Вы помещаете тег html внутри. Таким образом, содержимое внутри блока «if» будет обрабатываться как HTML.
  2. Вы используете <text></text> тег. Таким образом, содержимое внутри тега text будет отображаться, как вы выразите, без добавления каких-либо тегов или текста вокруг него, поэтому для вашего кода javascript он отобразит указанный вами код.
  3. Ваш текст предшествует @: lexeme, который сообщает бритве, что контент после него должен обрабатываться как html/text.

Короче говоря, изменение кода к этому является то, что вам нужно:

@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

Подведение итогов. Синтаксис:

1- Встроенное выражение Начните с символа @, чтобы написать код C# или VB с кодом Html. Пример:

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

2 Мульти Заявление блока код: Чтобы написать несколько операторов Бритвы заключить их в фигурных скобках

`@{ 
    Razor Stmts... 
    }` 

3- Показано текст из блока кода (который является то, что вы просите)

Вы можете использовать @ или <text> </text> для отображения текста в зависимости от ваших потребностей. Например:

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