Member 12817768 Ответов: 1

Ошибка во время итерации списка iin C#


У меня есть список сотрудников с ранее загруженными значениями. Я пытаюсь повторить их в представлении с foreach, но это никак не работает. У меня есть ошибка при компиляции:
The model element passed to the dictionary is of type 
'Humano2.Models.Alumno', but this dictionary requires a model element of type 'System.Collections.Generic.List1 [Humano2.Models.Alumno]'
.

Что я уже пробовал:

Классная персона
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Humano2.Models
{
    public class Persona
    {
        public int Dni;
        public string Nombre;
        public Persona()
        {


        }
     }   

}


Выпускник класса
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Humano2.Models
{


    public class Alumno : Persona
    {

        public int Edad;

        public Alumno(string nombre):base()
        {
            Edad = 18;
            if (lista.Count == 0)
            {
                this.altaAlumno(1111, "Julian", 20);
                this.altaAlumno(2222, "Pedro", 30);
                this.altaAlumno(3333, "Pablo", Edad);
            }
        }


        public Alumno(int edad):this()
        {
            this.Edad = edad;
        }
        public Alumno()
        {
            this.Nombre = "NN";
        }

        public static List<Alumno> lista = new List<Alumno>();

        public void altaAlumno(int Dni, string Nombre, int Edad)
        {
            lista.Add(new Alumno() { Dni = Dni, Nombre = Nombre, Edad = Edad });
        }
    }


контроллер
using Humano2.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace Humano2.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {


            Alumno p1 = new Alumno();
return View(p1);



        }
    }

}


Смотреть

@model List<Humano2.Models.Alumno>
    Layout = null;
    }

    <!DOCTYPE html>

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
    </head>
    <body>
        <div>
             @foreach (Humano2.Models.Alumno c in Model)
        {
            <p>@c.Nombre</p>
           <p>@c.Dni</p>
           <p>@c.Edad</p>
        }

        </div>
    </body>
</html>

1 Ответов

Рейтинг:
8

pradiprenushe

Вы возвращаете одну сущность Alumno для просмотра

Alumno p1 = new Alumno();
return View(p1);

И использование в качестве списка в поле зрения.

Сначала очистите свое требование. Вы действительно хотите показать список на вид, если нет, то не используйте список на вид.

Два варианта

1. либо удалить список из поля зрения

2. передайте список выпускников от контролера
List<Alumno> p1 = new List<Alumno>();
            p1.Add(new Alumno());
            return View(p1);


Member 12817768

не работает, в представлении показывает NN 0 0

pradiprenushe

Это правильный вывод. Вы создаете объект, который использует конструктор без параметров. таким образом, значение Nombre установлено. Другие имеют значения по умолчанию.

Этот конструктор вызывается при создании объекта
публичный выпускник()
{
это.Номбре = "НН";
}

Member 12817768

спасибо

pradiprenushe

Добро пожаловать