2013-06-28 2 views
0

У меня есть модель под названием «Видео», в которой есть ряд комментариев о комментариях и комментариев. Я создал следующие циклы в моем представлении, чтобы возвращать детали комментариев обратной связи и соответствующие ответы комментариев обратной связи, но хотя число Model.SelectedScreecast.Feedbacks равно 3, я вижу, что есть 3 записи обратной связи, итерация входит в цикл для 4-й раз, и я получаю ошибку ссылки объекта. Мой код выглядит следующим образом:Обозначение числа свойств модели на странице бритвы, возвращающее неправильное значение

@foreach (var comment in Model.SelectedScreencast.Feedbacks) 
     { 
      <li class="comment"> 
      <div class="avatar"> <img src="@Url.Content("~/Images/icons/avatar.png")" width="50" height="50" alt="Avatar" /> </div> 
      <div class="comment-meta"> 
       <h5 class="author"><a href="#">John Doe</a> - <a href="#" class="comment-reply-link">Reply</a></h5> 
       <p class="date">January 06, 2011</p> 
      </div> 
      <div class="comment-body"> 
       <p>@comment.FeedbackString</p> 
      </div> 
      <ul class="children"> 

      @foreach (var reply in @comment.FeedbackReplys) 
      { 
       <li class="comment"> 
       <div class="avatar"> <img src="@Url.Content("~/Images/icons/avatar.png")" width="50" height="50" alt="Avatar" /> </div> 
       <div class="comment-meta"> 
        <h5 class="author"><a href="#">John Doe</a> - <a href="#" class="comment-reply-link">Reply</a></h5> 
        <p class="date">January 06, 2011</p> 
       </div> 
       <div class="comment-body"> 
        <p>reply string</p> 
       </div> 
       </li> 
      }      
      </ul> 
      </li> 
     }   

Я могу вернуть ожидаемую строку при помощи следующего кода, хотя это без необходимого стиля для страницы.

@foreach (var comment in Model.SelectedScreencast.Feedbacks) 
     { 
      <li>@comment.FeedbackString</li> 

      foreach (var reply in @comment.FeedbackReplys) 
      { 
       <li>@reply.FeedbackReplyString</li> 
      }  
} 

Что может привести к этому, чтобы оценить как объект не указывает на экземпляр объекта, когда она установлена ​​через отладочные проверки и при использовании блока кода выше. Любая помощь будет принята с благодарностью.

+1

Вы уверены, что вы не установили четвертую запись как null? Причина в том, что ваш foreach подсчитывает 4 записи вместо 3. Попробуйте проверить вид в отладчике и посмотреть, что такое содержимое 'Model.SelectedScreencast.Feedbacks'. –

+0

Я проверил в debug и возвратил [0] [1] [2] feebacks с общим количеством отсчетов равным 3. Я не могу понять, почему он читает это как четыре – Jay

+0

То же самое касается 'comment.FeedbackReplys'? –

ответ

1

Ваш искатель неисправен.

@foreach (var reply in @comment.FeedbackReplys)

Должно быть: @foreach (var reply in comment.FeedbackReplys)

или даже: foreach (var reply in comment.FeedbackReplys).

Синтаксис бритвы запускает кодовые блоки с символом @ и не требует явного закрытия кода-блока. Таким образом, второй @ является резервным, поэтому может быть и второй @foreach@ be.

Не уверен, что это будет, но надеюсь, что это решает вашу проблему!

+0

Привет, Wouter спасибо за ваши усилия и советы, я буду помнить об этом в будущем, но это не то, что проблема возникает, к счастью – Jay

+0

Привет, Wouter, у меня есть применил ваши советы и использовал простой формат обновленного вопроса внизу, я, по крайней мере, могу вернуть значения, которые я знал там, где они есть. Но при применении html-стиля он возвращает ошибку ссылки на объект. Любые идеи о том, что может это сделать? – Jay

+0

Попробуйте использовать '@:', который вводит используемую строку непосредственно в html. нравится так: '@:

hello

'. И ваше обновление также должно быть: 'foreach (var reply in comment.FeedbackReplys)' вместо 'foreach (var reply в @ comment.FeedbackReplys)' –