我使用以下Razor脚本循环但它给了我以下错误:
@foreach (var item in ViewBag.Articles)
{
<div>@item.Title</div>
}
错误:
描述:编译服务此请求所需的资源时发生错误。请查看以下特定错误详细信息并相应地修改源代码。
编译器错误消息:BC30451:&#39; foreach&#39;没有宣布。由于其保护级别,它可能无法访问。
来源错误:
第29行:第30行:第31行:@foreach (ViewBag.Articles中的var项)第32行:{第33行:
@(item.index)。 @ item.model.Description源文件:C:\ Users \ darchual \ documents \ visual studio 2010 \ Projects \ Blog \ Blog \ Views \ Blog \ Details.vbhtml行:31
它还在我的IDE中说&#34;&#39; foreach&#39;没有宣布。由于其保护级别,它可能无法访问。&#34;
如何循环收藏?谢谢你的帮助。
编辑:
以下是整个代码:
@ModelType Blog.Blog
@code ViewData(&#34; Title&#34;)= ViewBag.Title End Code
详细
博客
<div class="display-label">name</div> <div class="display-field"> @Html.DisplayFor(Function(model) model.name) </div> <div class="display-label">description</div> <div class="display-field"> @Html.DisplayFor(Function(model) model.description) </div> <div class="display-label">dateCreated</div> <div class="display-field"> @Html.DisplayFor(Function(model) model.dateCreated) </div> </fieldset>
制品
@foreach (var item in ViewBag.Articles) { <div>@item.Title</div> }
@Html.ActionLink("Edit", "Edit", New With {.id = Model.BlogId}) | @Html.ActionLink("Back to List", "Index") </p>
以下是Blog对象:
Imports System.Data.Entity Imports System.ComponentModel.DataAnnotations
公共类博客
Public Property BlogId() As Integer Public Property Name() As String Public Property Description() As String Public Property DateCreated As Date Public Overridable Property Articles() As ICollection(Of Article)
结束班
Public Class BlogDbContext
Inherits DbContext Public Property Blogs As DbSet(Of Blog)
结束班
编辑:
终于开始工作了。工作代码是:
@For Each item In ViewBag.Articles
@<div>@item.Title</div>
Next
答案 0 :(得分:5)
答案是:
@For Each item In ViewBag.Articles
@<div>@item.Title</div>
Next
答案 1 :(得分:2)
您的页面代码位于VB.Net中,foreach()
是C#构造。您只需要使用For Each循环的VB Construct修改代码:
This thread on the ASP.NET Forum's has a good answer / code snippet:
Dim list As New List(Of Article)
list = ViewBag.Articles
If (list.Any())
Then
For Each item As Article In ViewBag.Articles
<div>@item.Title</div>
Next
End If
答案 2 :(得分:1)
如果您已经在剃刀代码块中,则不需要@
@if(ViewBag.Articles.Count>0)
{
foreach (var item in ViewBag.Articles)
{
<div>@item.Title</div>
}
}
您使用的是foreach
的 VB.NET版本吗?
@For Each item As Article In ViewBag.Articles
<div>@item.Title</div>
Next
答案 3 :(得分:1)
由于模型绑定器在ASP.NET MVC中的工作方式,有很多场景可以回发列表中每个值的索引。
所以我更喜欢使用索引的循环(对于每个循环的强类型的简单性):
@For i = 0 To Model.Articles.Count - 1
Dim curItem = Model.Articles(i)
@Html.EditorFor(Function(model) curItem)
Next
进一步阅读:
Introduction to ASP.NET Web Programming Using the Razor Syntax (Visual Basic) | C#