2015-04-14 3 views
-1

У меня есть представление, которое состоит из двух частей. Первая часть - таблица. В этой таблице отображаются данные из базы данных MongoDB:Получить идентификатор первой записи в MongoDB

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

Другая часть - это список. Когда я нажимаю на детали одной из записей в моем Tabel, появится список с данными этой записи, как это:

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") 

Может кто-нибудь помочь мне с этим?

EDIT

Мои, если/другое заявление:

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

Вы можете сделать что-то, как показано ниже, я переехал 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> 
} 
+0

Я сделал это немного иначе, я отредактировал свой вопрос. Я не могу преобразовать свой ответ в свой код. – bbvanee

Смежные вопросы