【问题标题】:Umbraco Forms - How to display the last 5 recordsUmbraco Forms - 如何显示最后 5 条记录
【发布时间】:2017-07-18 21:56:25
【问题描述】:

我想在页面上显示来自 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>

【问题讨论】:

    标签: c# razor umbraco umbraco-contour


    【解决方案1】:

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

    .Where(x => x.GetField("Display my name").Values[0].ToString() == "True").OrderBy(whatevs).Take(5)
    

    【讨论】:

    • 感谢您的回复,但是在OrderBy之后添加.Take(5)会将所有记录限制为5,因此记录总数将始终为5。
    • @mertamu 更新了我的答案,抱歉造成误解:-)
    • 对于迟到的回复,我深表歉意。所以我需要嵌套 foreach 对吗?每个的第二个都有一个 .Where() ?
    • 不,只有一个 foreach - .Where 紧随 Library.GetApprocedRecordsFromPage() 调用之后。
    • @foreach (dynamic record in Library.GetApprovedRecordsFromPage(@CurrentPage.Id).Where(x =&gt; x.GetField("Display my name").Values[0].ToString() == "True").OrderBy("Created descending")) 在我运行页面时给我“服务器错误”消息。我错过了什么吗?谢谢@jannik-anker
    【解决方案2】:

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

    @{
        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();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多