Estoy utilizando el siguiente maquinilla de Afeitar de secuencia de comandos para recorrer, pero me da el siguiente error:

@foreach (var item in ViewBag.Articles)
{
    <div>@item.Title</div>
}

De Error:

Descripción: se produjo Un error durante la compilación de un recurso requerido para dar servicio a esta solicitud. Por favor, revise los siguientes detalles del error y modificar su código fuente de forma adecuada.

Mensaje de Error del compilador: BC30451: ‘foreach’ no se ha declarado. Puede ser inaccesible debido a su nivel de protección.

Fuente De Error:

La línea 29: los Artículos de la Línea 30: Línea 31: @foreach
(var elemento en ViewBag.Los Artículos) De La Línea 32: { Línea 33:

@(elemento.el índice). @item.modelo.Descripción

Archivo de código fuente: C:\Users\darchual\documents\visual studio
2010\Proyectos\Blog\Blog\Views\Blog\Detalles.vbhtml Línea: 31 de

También se dice en mi IDE que «‘foreach’ no se ha declarado. Puede ser inaccesible debido a su nivel de protección.»

¿Cómo puedo bucle a través de la colección? Gracias por su ayuda.

Edición:

Aquí está el código completo:

@ModelType Blog.Blog

@Código
ViewData(«Titulo») = ViewBag.Título Final Del Código

Detalles

Blog

<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>

Artículos

@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>

Aquí está el Blog de objeto:

Las Importaciones Del Sistema.De datos.Entidad De Las Importaciones
Sistema.ComponentModel.DataAnnotations

Público Blog De La Clase

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)

Final De La Clase

Clase Pública BlogDbContext

Inherits DbContext
Public Property Blogs As DbSet(Of Blog)

Final De La Clase

Edición:

Finalmente tengo que trabajar. Código de trabajo es:

@For Each item In ViewBag.Articles
    @<div>@item.Title</div>
Next
  • Omg, me permite obtener este derecho, su error fue usar mal lenguaje de programación? Holly escalofríos que es un clásico! Voy a recordar que uno de los L-O-L 🙂
  • Lol fue un simple error de hacer 🙂
  • Uno de los Top 10 señales de que estás utilizando demasiado muchos tipos diferentes de lenguajes de programación en cualquier período de 24 horas. 🙂
InformationsquelleAutor user1477388 | 2012-07-26

4 Comentarios

  1. 2

    Su código de la página es en VB.Net y foreach() es un C# construcción. Sólo se necesita modificar el código de uso de la VB Construcción del bucle For each:

    Este hilo en el ASP.NET del Foro tiene una buena respuesta /fragmento de código:

    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
    • Estoy tratando de usar foreach() en el contexto de la maquinilla de Afeitar. No puedo hacer esto? ¿Cómo puedo bucle a través de estos registros en mi .vbhtml página? Me gustaría usar maquinilla de Afeitar aquí como que es la convención (estoy usando MVC+maquinilla de Afeitar).
    • He probado tu código nuevo, pero dice, «Elemento no definido». Gracias.
    • Puede que tenga que anuncio una instrucción para usted html de la página…es decir, @el uso de Blog. No estoy seguro de cuál es su modelo de Objetos parece
    • He intentado añadir el uso, pero no funciona. He añadido a mi Blog objeto de la pregunta.
    • Si el Elemento no está definido, son usted seguro de que hay objetos en el ViewBag.Artículos? Es «el Elemento no está definido.» una compilación o en tiempo de ejecución error?
    • Finalmente llegué al trabajo, el código se actualiza.
    • Buena oferta…felicidades

  2. 1

    Si ya estás en una maquinilla de afeitar bloque de código, no es necesario el @

    @if(ViewBag.Articles.Count>0)
    {
       foreach (var item in ViewBag.Articles)
       { 
         <div>@item.Title</div>
       }
    }

    Está utilizando el VB.NET versión de foreach ?

    @For Each item As Article In ViewBag.Articles
      <div>@item.Title</div>
    Next
    • Nota: el Uso de Count no es eficiente debido a que el código tiene un bucle a través de todos los registros. Si utiliza .Any() el código puede bucle a través de un registro y de corto circuito, después de la primera como todo lo que usted está tratando de determinar es si hay al menos uno. (No hay necesidad de recorrer 100 mil registros, por ejemplo, para determinar si existe al menos uno).
    • Yo no estoy en un bloque de código. Que me dice que «foreach no está definido!» He actualizado a la pregunta con toda mi código.
    • Es usted el uso de la VB.NET la versión de foreach ? ver mi respuesta actualizada
    • Estoy usando VB ASP.NET MVC. El código que he proporcionado es en Vistas/Blogs/Detalles.vbhtml. Yo no puedo aplicar el código de VB usted porque esta es una .vbhtml página. Así que, estoy tratando de usar maquinilla de Afeitar, pero me dice foreach no existe!
    • Está usted diciendo que no se puede aplicar el Vb.NET la versión que se incluye debido a que usted está usando VB ? No tiene sentido para mí !
    • No, esto se representa mediante Navaja como lo que yo sé. No sé cómo escribir el código de VB en un vbhtml documento. Estoy tratando de conseguir la sintaxis de afeitar para trabajar.
    • Ahora veo lo que ustedes me están diciendo. Me han tratado de la VB/ máquina de Afeitar código pero dice, «Tipo» Artículo «no definido».
    • Finalmente llegué al trabajo, el código se actualiza.

  3. 1

    Porque de la forma en que el modelo de cuaderno de obras en ASP.NET MVC, hay una gran cantidad de escenarios en los que es útil a la devolución del índice de cada valor en una lista.

    Así que yo prefiero usar un indexado por bucle (a través de la simplicidad de una inflexible para cada bucle):

    @For i = 0 To Model.Articles.Count - 1
        Dim curItem = Model.Articles(i)
        @Html.EditorFor(Function(model) curItem)
    Next

    Leer Más:

    Introducción a la ASP.NET Programación Web Utilizando la Sintaxis de Afeitar (Visual Basic) | C#

Dejar respuesta

Please enter your comment!
Please enter your name here