为什么我的@if
语句的评估结果不正确?鉴于以下剃刀代码:
@{
List<string> list = new List<string> { "test 0", "test 1" };
int index = 0;
}
@foreach (var item in list)
{
<div index="@index" item="@if (index == 0) { <text>zero</text> }">
@item
</div>
index++;
}
产生以下输出:
<div index="0" item="">
test 0
</div>
<div index="1" item="">
test 1
</div>
所需的输出:
<div index="0" item="zero">
test 0
</div>
<div index="1" item="">
test 1
</div>
文本zero
从未得到渲染,在div标记上放置了一个断点,两次迭代都显示index 2
(!)。我知道这可能是我很想念的东西,但我不知道那是什么。
更新:这没有区别
<div index="@index" item="@if (index == 0)
{
<text>zero</text>
}">
@item
</div>
答案 0 :(得分:0)
尝试一下
@{
List<string> list = new List<string> { "test 0", "test 1" };
int index = 0;
}
@foreach (var item in list)
{
if(index == 0){
<div index="@index" item="zero">
@item
</div>
index++;
}
else if(index == 1)
{
<div index="@index" item="">
@item
</div>
index++;
}
else
{
// more here
}
}
我认为也许您的括号放在错误的位置。这似乎对我有用……https://dotnetfiddle.net/BohydN(仅网格的右半部分是相关的)。
答案 1 :(得分:0)
这是“设计”,如此处所示:https://github.com/aspnet/AspNetCore/issues/9070