Loop through Collection in VB ASP.NET MVC Razor
我正在使用以下Razor脚本进行循环,但它给出了以下错误:
1 2 3 4 | @foreach (var item in ViewBag.Articles) { @item.Title } |
错误:
描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码。
编译器错误消息:BC30451:未声明"foreach"。由于其保护级别,可能无法访问。
源错误:
Line 29: Articles Line 30: Line 31: @foreach
(var item in ViewBag.Articles) Line 32: { Line 33:@(item.index). @item.model.Description
Source File: C:\Users\darchual\documents\visual studio
2010\Projects\Blog\Blog\Views\Blog\Details.vbhtml Line: 31
它在我的IDE中还说"foreach"没有声明。由于其保护级别,可能无法访问。"
如何循环查看集合?谢谢你的帮助。
编辑:
以下是整个代码:
@ModelType Blog.Blog
@Code
ViewData("Title") = ViewBag.Title End CodeDetails
Blog
1
2
3
4
5
6
7
8
9
10
11
12
13
14 name
@Html.DisplayFor(Function(model) model.name)
description
@Html.DisplayFor(Function(model) model.description)
dateCreated
@Html.DisplayFor(Function(model) model.dateCreated)
</fieldset>Articles
1
2
3
4 @foreach (var item in ViewBag.Articles)
{
@item.Title
}
1
2
3 @Html.ActionLink("Edit","Edit", New With {.id = Model.BlogId}) |
@Html.ActionLink("Back to List","Index")
</p>
以下是博客对象:
Imports System.Data.Entity Imports
System.ComponentModel.DataAnnotationsPublic Class Blog
1
2
3
4
5
6
7 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)End Class
Public Class BlogDbContext
1
2 Inherits DbContext
Public Property Blogs As DbSet(Of Blog)End Class
编辑:
终于成功了。工作代码为:
1 2 3 | @For Each item In ViewBag.Articles @@item.Title Next |
答案是:
1 2 3 | @For Each item In ViewBag.Articles @@item.Title Next |
您的页面代码在vb.net中,而
ASP.NET论坛上的此线程有一个很好的答案/代码段:
1 2 3 4 5 6 7 8 | Dim list As New List(Of Article) list = ViewBag.Articles If (list.Any()) Then For Each item As Article In ViewBag.Articles @item.Title Next End If |
由于模型绑定器在ASP.NET MVC中的工作方式,在很多情况下,将每个值的索引发回列表都很有帮助。
因此,我更喜欢使用索引for循环(而不是为每个循环使用强类型的简单性):
1 2 3 4 | @For i = 0 To Model.Articles.Count - 1 Dim curItem = Model.Articles(i) @Html.EditorFor(Function(model) curItem) Next |
进一步阅读:使用Razor语法的ASP.NET Web编程简介(Visual Basic)C#
如果您已经处于Razor代码块中,则不需要
1 2 3 4 5 6 7 | @if(ViewBag.Articles.Count>0) { foreach (var item in ViewBag.Articles) { @item.Title } } |
你使用的是vb.net版本的
1 2 3 | @For Each item As Article In ViewBag.Articles @item.Title Next |