2013-06-28 34 views
0

我有一个名为Video的模型,它有一系列附加的反馈评论和反馈评论回复。我在View中创建了以下循环,以返回反馈评论和相关反馈评论回复的详细信息,但尽管Model.SelectedScreecast.Feedbacks的计数为3,但我可以看到有3个反馈记录迭代进入循环第四次,我收到一个对象引用错误。我的代码如下:剃刀网页中模型属性的返回值返回不正确的值

@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

你确定你没有设置第四条记录为空吗?因为它听起来像你的foreach计数4记录,而不是3. 尝试检查调试器中的视图,看看“Model.SelectedScreencast.Feedbacks”是什么内容。 –

+0

我检查了调试,它返回[0] [1] [2]反馈总计数被设置为3.我不明白为什么它读这个为4 – Jay

+0

'comment.FeedbackReplys'也一样? –

回答

1

你的foreach有问题。

@foreach (var reply in @comment.FeedbackReplys)

应该是:@foreach (var reply in comment.FeedbackReplys)

甚至:foreach (var reply in comment.FeedbackReplys)

剃刀语法启动带有@字符的代码块,并且不需要显式关闭代码块。所以第二个@是多余的,所以可能第二个是@

不知道是否会,但希望这解决了您的问题!

+0

您好Wouter感谢您的努力和建议,我会铭记这对未来,但这不是问题的起因不幸 – Jay

+0

您好Wouter,我有应用您的建议并在底部使用更新问题的简单格式,我至少能够返回我在哪里知道的值。但是,当应用html样式时,它返回对象引用错误。任何想法可能会导致什么? – Jay

+0

尝试使用'@:'直接将输入的字符串输入到html中。 像这样:'@:

hello

'。 而且您的更新还需要: 'foreach(var reply in comment.FeedbackReplys)'而不是'foreach(var reply in @ comment.FeedbackReplys)' –