1

出于某种原因,我似乎无法理解为什么The if block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.在我的 ASP.NET MVC 应用程序中出现错误。

@foreach (var image in Model.Images)
{
    if (counter == Model.Images.Count - 1)
    {
        <div style="float: left; height: 250px; padding-right: 5px;">
    }
    else
    {
        <div style="float: left; height: 200px; padding-right: 5px;">
    }
    ....
    ....

在上述之前,我只是在做:<div style="float: left; height: 200px; padding-right: 5px;">,但是我需要这个 If Else 让它看起来更好。

我在 If Else 语句中做错了什么?

4

5 回答 5

2

你的问题是 MVC 解析器正在解释你的代码,因为你已经离开了<div>。与其打开两个,不如尝试修改代码并只输出一个:

@foreach (var image in Model.Images)
{

    int height;

    if (counter == Model.Images.Count - 1)
    {
        height = 250;
    }
    else
    {
        height = 200;
    }

    <div style="float: left; height: @(height.ToString()+"px"); padding-right: 5px;">
        ...
        ...
    </div>
}

它也可以以更紧凑的方式完成:

@foreach (var image in Model.Images)
{

    bool condition = (counter == Model.Images.Count - 1)

    <div style="float: left; height: @( condition ? "200px" : "250px"); padding-right: 5px;">
        ...
        ...
    </div>
}
于 2013-07-16T10:51:48.270 回答
1

这应该有效:

@foreach (var image in Model.Images)
{
    if (counter == Model.Images.Count - 1)
    {
        <text><div style="float: left; height: 250px; padding-right: 5px;"></text>
    }
    else
    {
        <text><div style="float: left; height: 200px; padding-right: 5px;"></text>
    }
}
于 2013-07-16T10:40:55.487 回答
1

我会尝试完全像这样替换 if/else:

 <div style="@(counter == Model.Images.Count - 1 ? "float: left; height: 250px; padding-right: 5px;" : "float: left; height: 200px; padding-right: 5px;")">
于 2013-07-16T10:51:46.420 回答
0

尝试将整个内容包装在 @{ ... } 中。并从现有语法中删除 @ 符号。

于 2013-07-16T10:42:58.647 回答
0

检查是否需要@fromforeach并尝试@:在每个前面附加div

于 2013-07-16T12:15:05.770 回答