微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

if else 语句没有被视为@foreach 中的代码 - 2sxc v11 DNN 9.8

如何解决if else 语句没有被视为@foreach 中的代码 - 2sxc v11 DNN 9.8

我目前正在学习 2sxc 并且正在构建一个目录应用程序作为我的初始项目。

我正在尝试在列表视图中使用以下代码来根据布尔值“UpgradedListing”更改项目的显示方式

@foreach(var listing in AsList(Data)) {
<div @Edit.TagToolbar(listing)>
   if(listing.UpgradedListing == 'true'){
        <strong>@listing.ListingName</strong<br/>
        <a href='mailto:@listing.Email'>@listing.Email</a>
    <hr/>
    } else {
        @listing.ListingName<br/>
        <a href='mailto:@listing.Email'>@listing.Email</a>
    <hr/>
    }
</div>
}

结果输出如下所示:

if(listing.UpgradedListing == 'true'){ Techmedics Ltd office@techmedics.co.nz
} else { Techmedics Ltd
office@techmedics.co.nz
}
if(listing.UpgradedListing == 'true'){ Solutions Online NZ Ltd enquiries@solutions-online.co.nz
} else { Solutions Online NZ Ltd
enquiries@solutions-online.co.nz
}

换句话说,if else 不被视为代码

谁能解释一下这是为什么?

解决方法

你只需要在第一个 if 前面加一个 @ 符号,所以

@if(listing.UpgradedListing == 'true'){

另外你还有一个错字,你的结束强标签缺少正确的 >

并且“真”与真(布尔值)不同。 2sxc 会知道并为 .UpgradedListing 返回一个布尔值(如果你把它设置为一个布尔字段......如果你把它作为一个字符串,那么你需要 == "true"

并且您还可以将不会更改的内容移到 if/else 之外以使其更具可读性...

@foreach (var listing in AsList(Data))
{
    // here you can still write C# without an @
    // because it's still in code-mode
    var x = 7; // this still works here
    <div @Edit.TagToolbar(listing)>
        <!-- here Razor switches to HTML because we had a Tag around it -->
        <!-- so we need to really introduce the code-mode again -->
        @if (listing.UpgradedListing)
        {
            <strong>@listing.ListingName</strong><br />
        }
        else
        {
            @listing.ListingName<br />
        }
        <a href='mailto:@listing.Email'>@listing.Email</a>
        <hr />
    </div>
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。