使用自定义过滤器 属性 - Umbraco

Filter with custom property - Umbraco

我有一个问题。我需要从自定义控制器和 .cshtml

中列出带有 "Active == true" 属性 的子项

控制器

public class PollsController : SurfaceController
{
    private List<Theme> ThemeList()
    {
        var themePageList = Umbraco.Content(CurrentPage.Id).Children.Where("¿¿¿???");
        var themeList = new List<Theme>();

        foreach (var currentTheme in themePageList)
        {
            themeList.Add(
                new Theme
                {
                    ID = currentTheme.Id,
                    Title = currentTheme.Name,
                }
                );
        }

        return themeList;
    }
}

如果不在控制器上过滤,就像我过滤视图一样?

CSHTML

@model Encuestas.ViewModels.PollViewModel

@foreach (var currentTheme in Model.Themes.Where("¿¿¿???")
{
    <div>
        <p>
            <h1 style="text-align: center">@currentTheme.Title</h1>
        </p>
    </div>
}

Umbraco 内容

Polls
    Theme 1
        Question 1
            Answer 1
            Answer 2
            Answer 3
            Answer 4
        Question 2
            Answer 1
            Answer 2
            Answer 3
            Answer 4
        Question 3
            Answer 1
            Answer 2
            Answer 3
            Answer 4
    Theme 2 ==> Active == false
        Question 1
            Answer 1
            Answer 2
            Answer 3
            Answer 4
        Question 2
            Answer 1
            Answer 2
            Answer 3
            Answer 4
        Question 3
            Answer 1
            Answer 2
            Answer 3
            Answer 4

谢谢!!!

编辑

public ActionResult RenderPoll()
{

    var viewModel = new PollViewModel
    {
        Themes = ThemeList()
    };

    return PartialView("~/Views/Partials/_Polls.cshtml", viewModel);

}
@model Encuestas.ViewModels.PollViewModel

@foreach (var currentTheme in Model.Themes(p => p.Active==true))
{
    <div>
        <p>
            <h1 style="text-align: center">@currentTheme.Title</h1>
        </p>
    </div>
}

更改此行:

var themePageList = Umbraco.Content(CurrentPage.Id).Children.Where("¿¿¿???");

var themePageList = Umbraco.TypedContent(CurrentPage.Id).Children.Where(x => x.GetPropertyValue<bool>("active"));

Umbraco.Content() 是动态类型,而 Umbraco.TypedContent() 是 IPublishedContent 类型。

您不需要在 razor 文件中过滤。