0

我想在页面上显示来自 Umbraco 表单的记录。到目前为止,我设法显示:

  • 记录总数
  • “显示我的名字”值为 TRUE 的所有记录

如何将其限制为仅显示 5 条最新记录(其中“显示我的姓名”值为 TRUE)?

我的代码如下:

<ul id="formData">
    @{int i = 0;}	
    @foreach (dynamic record in Library.GetApprovedRecordsFromPage(@CurrentPage.Id).OrderBy("Created descending"))
    {		
        if (@record.GetField("Display my name").Values[0].ToString() == "True")
        {
            <li>								
                Name: @record.GetField("Name").Values[0]<br />
                Email: @record.GetField("Email").Values[0]<br />
                Display my name: @record.GetField("Display my name").Values[0]<br />	
                Created: @record.Created.ToString("dd MMMM yyy")<br />
            </li>
        }
        i++;	
    }					
</ul>
<h4>Total data: @i</h4>

4

2 回答 2

1

您也许可以将属性值检查放入 .Where(...)? 所以

.Where(x => x.GetField("Display my name").Values[0].ToString() == "True").OrderBy(whatevs).Take(5)
于 2017-07-19T05:17:17.673 回答
0

我建议您使用此代码获取记录:

@{
    using (var formStorage = new FormStorage())
    {
        using (var recordStorage = new RecordStorage())
        {
            var form = formStorage.GetForm(Guid.Parse("ede58fd2-9eff-4f88-a5d6-053042983681"));
            var records = recordStorage.GetAllRecords(form).Where(x => x.UmbracoPageId == Model.Content.Id && x.State == FormState.Approved).Where(x => x.GetRecordField("Display my name").Equals("True")).OrderByDescending(x => x.Created).ToList();
        }
    }
}
于 2017-07-24T15:52:38.930 回答