我真的必须用" @:"标记每一行。当我使用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
{
}
答案 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; - 除此之外,其中包含代码:
<text></text>
标记。这样,text
标记内的内容将在您放置时呈现,而不会在其周围添加任何标记或文本,因此对于您的javascript代码,它将呈现您指定的代码。 @:
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
{
}