我必须承认我是C#MVC 4编程的新手,但我从未在任何其他编程语言中看到过如此奇怪的事情......
foreach中的if部分工作正常,但是,即使它是真的,else部分也会被执行,这很奇怪。
当我删除“@ dag.Datum.ToString(”dd / MM / yyyy“)”时,if if有效,但不幸的是,这不是我想要的。
提前感谢您的帮助!
(对我在我的代码中使用的荷兰语感到遗憾)
@using (Html.BeginForm())
{
<br /><br /><table>
@foreach (var cursist in Model.Cursisten.Where(cursist => cursist.Soort == 1))
{
<tr>
<th>@cursist.Email</th>
@foreach (var dag in Model.Opleidingsdagen.Where(m => m.chked == true))
{
<td>
@foreach (var afw in Model.Afwezigheden)
{
if (afw.DagID.Equals(dag.DagID) && afw.CursistID.Equals(cursist.Email))
{
@:a @dag.Datum.ToString("dd/MM/yyyy")
}
else
{
@:b
}
}
</td>
}
</tr>
}
<tr>
<td><br /><br /><input type="submit" value="Afwezigheden aanpassen" class="btn" /></td>
</tr>
</table>
}
EDIT 这是我总是得到的html表输出:
testacc1@test.be a 14/08/2013 b b a 15/08/2013 b b
testacc2@test.be b b b b b b
testacc3@test.be b b b b b b
编辑#2。编辑#2
我的预期输出是:
testacc1@test.be a 14/08/2013 a 15/08/2013 b
testacc2@test.be b b b
testacc3@test.be b b b
因此即使输出'a + date',总会有'b'
答案 0 :(得分:4)
没有错误,它运行正常。你有3个嵌套的foreach循环,每个电子邮件地址产生6个输出,每个<td>
产生2个输出,在代码中放置一个断点并遵循逻辑。我100%肯定这是你的最终错误而不是MS。
答案 1 :(得分:0)
如果你尝试会发生什么:
<text>a @dag.Datum.ToString("dd/MM/yyyy")</text>
?
由于else
行的格式,Razor解析器可能会有点混淆并执行@:a @dag.Datum.ToString("dd/MM/yyyy")
子句。
编辑:
如果您尝试
会发生什么@foreach (var afw in Model.Afwezigheden)
{
if (true)
{
@:a @dag.Datum.ToString("dd/MM/yyyy")
}
else
{
@:b
}
}
是否还执行了else
子句?
编辑:
啊,好吧,根据你的评论,似乎你的if
语句子句似乎正在返回false
,否则我看不出如何执行else
子句。将每个部分提取为变量:
bool idMatch = afw.DagID.Equals(dag.DagID);
bool emailMatch = afw.CursistID.Equals(cursist.Email);
if (idMatch && emailMatch)
如果失败,将更容易确定哪个相等。