【问题标题】:Umbraco & Razor. Filter selection by dropdown valueUmbraco 和剃须刀。按下拉值过滤选择
【发布时间】:2017-02-08 11:11:08
【问题描述】:

我有一个从当前页面的子页面生成的选择。在该选择中(我们称之为水果)我有项目,每个项目都有一个fruitType。

此代码不起作用:

@{
    var selection = CurrentPage.Children("fruit").Where("Visible");
}
<ul>
    @foreach(var item in selection){
        @if(@item.fruitType == "Apple"){
        <li>
            <a href="@item.Url">@item.Name</a><br/>
            @item.fruitName<br>
            @item.fruitType<br>
            @if (item.image != null && !(item.image is Umbraco.Core.Dynamics.DynamicNull))
                        { var m = Umbraco.Media(item.image);
                            <img src="@m.Url" alt="Picture of @item.Name" />
                        }
        </li>
        }
    }
</ul>

我要做的是只列出水果类型为“Apple”的项目。该值是从“fruitType”下拉列表中选择的,我尝试使用 Umbraco 从下拉数据类型中使用的数字和字符串值。

如果我删除 if 条件,除了它显示所有水果类型之外,一切都可以完美运行。

有什么建议吗?

【问题讨论】:

  • 尝试使用类型化版本 (Model.Content) 而不是 CurrentPage 以获得更好的智能感知。还可以尝试在循环内打印@item.GetPropertyValue("fruitType") 以查看存储在属性fruitType 中的实际值。 PS:在@if(@item.fruitType == "Apple"){ 你有一个额外的@ 在项目之前

标签: razor filter umbraco


【解决方案1】:

叹息声明太多了..

结果表明 ifitem 引用都不需要在其前面附加 @ 声明,因此正确的代码如下所示:

@{
    var selection = CurrentPage.Children("fruit").Where("Visible");
}
<ul>
    @foreach(var item in selection){
        if(item.fruitType == "Apple"){
        <li>
            <a href="@item.Url">@item.Name</a><br/>
            @item.fruitName<br>
            @item.fruitType<br>
            @if (item.image != null && !(item.image is Umbraco.Core.Dynamics.DynamicNull))
                        { var m = Umbraco.Media(item.image);
                            <img src="@m.Url" alt="Picture of @item.Name" />
                        }
        </li>
        }
    }
</ul>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 2019-07-24
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多