字符串中的C#Razor语法

时间:2012-01-08 09:50:57

标签: c# asp.net razor

这是我遇到问题的代码:

@{int i = 1;}
@foreach (var item in Model)
{
    @:<ul id="sortablei" class='droptrue'>
    i++;
}

如何在id sortablei中使用i? 我试过了:@ i或@ {i}但似乎没有空格之前我没有工作。 我在Razor语法参考中找不到我的问题的答案,所以我现在有点无能为力。

2 个答案:

答案 0 :(得分:10)

支架:

@:<ul id="sortable@(i)" class='droptrue'>

这里的括号是剃刀表达的范围;在许多情况下,它们不是必需的,但是在以下情况下它们是必要的:

  • 表达式(在右边)是非平凡的(空格等)并需要帮助来确定范围
  • 没有它,它看起来像一个电子邮件地址,即abc@def - 这有特殊处理,以避免打破其中包含电子邮件地址的网页<​​/ li>

答案 1 :(得分:1)

类似的东西:

@model System.Generic.Collections.List<MyNameSpace.Product>
@{
    int i = 1;
    string sortablei = "abc",
           droptrue = "abc-cls";
}

<ul id="@sortablei" class="@droptrue">
    @foreach (var item in Model)
    {
       <li>@item.Qty x @item.Name</li>
       i++;
    }
</ul>

根据您的知识,这是quick reference


像我这样的接缝没有做对,

正如马克所说,你需要做的就是用括号(如

)包围变量
sortable@(i)

我希望参考文章有点用处,因为您可以在显式表达式示例中找到您的特定问题