Razor页面中的模型属性的Foreach计数返回不正确的值

时间:2013-06-28 11:34:41

标签: asp.net-mvc-4 razor foreach object-reference

我有一个名为Video的模型,其中包含一系列附加的反馈意见和反馈评论回复。我在我的视图中创建了以下循环以返回反馈注释的详细信息和相关的反馈注释回复,但是虽然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 个答案:

答案 0 :(得分:1)

你的foreach是错误的。

@foreach (var reply in @comment.FeedbackReplys)

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

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

Razor语法以@字符开始代码块,不需要显式关闭代码块。因此第二个@是多余的,第二个@foreach @也可能是多余的。

不确定是否会,但希望这能解决您的问题!