获取MongoDB中第一条记录的ID

时间:2015-04-14 12:55:47

标签: asp.net .net asp.net-mvc

我有一个由两部分组成的视图。第一部分是一张桌子。此表显示来自MongoDB数据库的数据,如下所示:

id| item 1 | item 2 | item 3
1 | value1 | value1 | value1    details
2 | value2 | value2 | value2    details
3 | value3 | value3 | value3    details

另一部分是一个清单。当我点击表格中其中一条记录的详细信息时,会出现一个列表,其中包含该记录的数据,如下所示:

id    : 1
item 1: value1
item 2: value1
item 3: value1

这很好用。但是当我转到此页面时,我没有点击details列表保持空白。我希望这个列表填充我的表的第一条记录的数据(不点击详细信息链接)。

此列表是动态生成的,因此我使用循环来显示项目。 所以,如果我点击详细信息:

@Html.ValueFor(x => x.LineViewItems.First(lvi => lvi.Id == Model.SelectedLineView)
                     .LineFieldAttributes.Single(lfa => lfa.Name == fieldName).Value);

此代码显示记录的值。但是如果没有点击details,那么在else部分,我想使用相同的代码,但更改:

(lvi => lvi.Id == Model.SelectedLineView)

这样的事情:

(lvi => lvi.Id == "Id of the first record")

有人可以帮我这个吗?

修改

我的if / else声明:

foreach (var fieldName in Model.LineViewAttributeNames)
    {
        <div class="editor-label">
           @fieldName

        </div>
        <div class="editor-field">
            @if (!string.IsNullOrEmpty(Model.SelectedLineView))
            {
                @Html.EditorFor(x => x.LineViewItems.First(lvi => lvi.Id == Model.SelectedLineView)
                        .LineFieldAttributes.Single(lfa => lfa.Name == fieldName).Value, null, fieldName, null)
            }
            else
            {
                // the code when details is not clicked.
            }
        </div>
    }

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作,我将if移到First声明中。

foreach (var fieldName in Model.LineViewAttributeNames)
{
    <div class="editor-label">
       @fieldName

    </div>
    <div class="editor-field">
        @{
            var selectedItem = Model.LineViewItems.First(lvi => {
                    var selectedId = Model.SelectedLineView;
                    if(string.IsNullOrEmpty(Model.SelectedLineView)) // details is not clicked (SelectedLineView is not set)
                    {
                         selectedId = Model.LineViewItems.First().Id;
                    }
                    return lvi.Id == selectedId;
                });
        }

        @Html.EditorFor(x => selectedItem.LineFieldAttributes.Single(lfa => lfa.Name == fieldName).Value, null, fieldName, null)

    </div>
}