C# Razor语法在字符串中使用

6
这是我遇到问题的代码:

这是我遇到问题的代码:

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

我该如何在id为sortablei的元素中使用i?我尝试了@i或@{i},但似乎如果i前面没有空格,它就无法正常工作。在Razor语法参考中,我没有找到解决我的问题的答案,所以现在我有点茫然。

2个回答

11

括号:

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

这里的括号是用来限定 Razor 表达式作用域的;在许多情况下,它们并不是必需的,但在以下情况下则必须使用:

  • 右侧的表达式较为复杂(包含空格等),需要帮助来确定其作用域
  • 没有使用括号时,它看起来像一个电子邮件地址,例如abc@def - 这会有特殊处理以避免破坏包含电子邮件地址的页面

啊,如此简单,但参考文献中没有提到!非常感谢! - Unfixable

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>

这里有一个关于你所需知识的快速参考

看起来我做错了,

正如马克所说的那样,你需要做的就是使用括号将变量包围起来,像这样:

sortable@(i)

希望这个参考对您有所帮助,因为您的特定问题可以在显式表达式示例中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接