C# 什么';用@(“<;foo>;”)封闭剃须刀线的目的是什么?

C# 什么';用@(“<;foo>;”)封闭剃须刀线的目的是什么?,c#,html,asp.net-mvc,vb.net,razor,C#,Html,Asp.net Mvc,Vb.net,Razor,我正在查看其他人的HTML(在.NET web应用程序中),并不断看到如下代码: @("<foo>") @(“”) 但这似乎可以简单地写成foo,并获得相同的结果。我假设这是razor语法,但我不理解用@(“”括起字符串的目的 有人能解释一下吗?使用谷歌很难找到一个明确的答案 提前谢谢 一个可能的原因是允许在多个位置关闭标签,例如 <div> @(if foo == bar) { //some content here </div> }

我正在查看其他人的HTML(在.NET web应用程序中),并不断看到如下代码:

@("<foo>")
@(“”)
但这似乎可以简单地写成
foo
,并获得相同的结果。我假设这是razor语法,但我不理解用
@(“”
括起字符串的目的

有人能解释一下吗?使用谷歌很难找到一个明确的答案


提前谢谢

一个可能的原因是允许在多个位置关闭标签,例如

<div>
@(if foo == bar)
{
    //some content here
    </div>

}
else
{
    //some other content here
    </div>
}

@(如果foo=巴)
{
//这里有一些内容
}
其他的
{
//这里还有其他一些内容
}
不是有效的razor语法,其中为

@Html.Raw("<div>")
@(if foo == bar)
{
    //some content here
    @Html.Raw("</div>")

}
else
{
    //some other content here
   @Html.Raw("</div>")
}
@Html.Raw(“”)
@(如果foo=巴)
{
//这里有一些内容
@Html.Raw(“”)
}
其他的
{
//这里还有其他一些内容
@Html.Raw(“”)
}

是有效的。

作为我以上评论的补充,下面是在for循环中使用它的示例:

<div class="row">
@for (var i = 0; i < 9; i++)
{
    if (i != 0 && i % 3 == 0)
    {
        @("</div><div class='row'>")
    }

    <div class="col">@i</div>        
}
</div>

@对于(变量i=0;i<9;i++)
{
如果(i!=0&&i%3==0)
{
@("")
}
@我
}
这将大致产生:

<div class="row">
    <div class="col">1</div>
    <div class="col">2</div>
    <div class="col">3</div>
</div>
<div class="row">
    <div class="col">4</div>
    <div class="col">5</div>
    <div class="col">6</div>
</div>
<div class="row">
    <div class="col">7</div>
    <div class="col">8</div>
    <div class="col">9</div>
</div>

1.
2.
3.
4.
5.
6.
7.
8.
9

可能是为了防止
被解释为标签。实际上,恰恰相反。这意味着允许将
作为标记输出到页面,而不会影响Razor解析器@Carl在下面的回答非常准确,但我看到forloops中最常用的方法是在一定次数的迭代后关闭并重新打开外部标记,例如.FWIW,以下所有操作都将用于相同的目的:
@(“”
@Html.Raw(“”
),
@:
这可以通过简单地将
移出条件块来避免。是的,它可以-这只是用法的一种可能解释。@Carl我明白了-这现在有意义了!谢谢:-)