Razor引擎if else声明

时间:2016-09-07 21:02:38

标签: asp.net-mvc razor razorengine

我真的必须用" @:"标记每一行。当我使用Razor Engine评估模板时,只想打印包含在If语句中的整个块:

@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
{

}

2 个答案:

答案 0 :(得分:3)

总结Razor语法:

1-内联表达 从@符号开始用Html代码编写C#或VB代码。例如:

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

2-多语句代码块: 要编写多个Razor语句,请将它们括在大括号中

  `@{
     Razor Stmts...
   }`

3-显示代码块中的文本(这是您要求的)

您可以使用@<text> </text>根据需要显示文字。例如:

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

答案 1 :(得分:2)

您可以在此处查看有关Razor语法的精彩帖子: http://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax

简而言之,此处适用的规则是:

你有一个代码块 - 你的&#34;如果&#34; - 除此之外,其中包含代码:

  1. 你在里面放了一个html标签。这样,&#34; if&#34;内部的内容块将被视为HTML。
  2. 您使用<text></text>标记。这样,text标记内的内容将在您放置时呈现,而不会在其周围添加任何标记或文本,因此对于您的javascript代码,它将呈现您指定的代码。
  3. 您的文字前面有@: lexeme,它告诉剃刀将其后的内容视为html / text。
  4. 简而言之,您需要将代码更改为此代码:

    @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
    {
    
    }