Ошибка CS1503 Аргумент 1: невозможно преобразовать из «KurseviApp.Kurs» в «KurseviApp.Student» - PullRequest
0 голосов
/ 24 октября 2018

Я новичок в ASP.NET MVC и пытаюсь создать простое приложение со многими отношениями (курсы / студенты).На моем языке (kurs / student).

Это мой курс

namespace KurseviApp
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations.Schema;

    public partial class Kurs
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Kurs()
        {
            this.Student = new HashSet<Student>();
        }

        public int PK_Kurs_ID { get; set; }
        public string Naziv_Kursa { get; set; }
        [NotMapped]
        public string Izabrani { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Student> Student { get; set; }
    }
}

Это мой класс студентов

namespace KurseviApp
{
    using System;
    using System.Collections.Generic;

    public partial class Student
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Student()
        {
            this.Kurs = new HashSet<Kurs>();
        }

        public int PK_Student_ID { get; set; }
        public string Broj_Indeksa { get; set; }
        public string Ime { get; set; }
        public string Prezime { get; set; }
        public string Godina { get; set; }
        public string Status { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Kurs> Kurs { get; set; }
    }
}

И я сделал это довольнону пока.Но проблема возникает, когда я создаю новый курс и выбираю студентов для.Это мой код в контроллере

private kurseviEntities db = new kurseviEntities();

public ActionResult Add(int id = 0)
{
    Kurs ks = new Kurs();
    using (db)
    {
        ks.Student = db.Student.ToList();
    }
    return View(ks);
}
[HttpPost]
public ActionResult Add(Kurs kurs)
{
    using (db)
    {
        db.Student.Add(kurs); //THIS LINE IS A PROBLEM
        db.SaveChanges();
    }
    return RedirectToAction("index");
}

Это дает мне ошибку, которую я написал в заголовке статьи.Если я удалю строку, курс будет успешно создан, но мне все еще не хватает добавления студентов в курс.Любая помощь приветствуется, спасибо заранее.

РЕДАКТИРОВАТЬ: Вот мой взгляд

@model KurseviApp.Kurs
@{
    ViewBag.Title = "Add";
}
<h2>Add</h2>

@using (Html.BeginForm())
{
    <div class="form-horizontal">
        @Html.HiddenFor(model => model.PK_Kurs_ID)
            @Html.LabelFor(model => model.Naziv_Kursa, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Naziv_Kursa, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Naziv_Kursa, "", new { @class = "text-danger" })
            </div>

        <label>Odabir studenata</label>
        @Html.DropDownListFor(model => model.Izabrani, 
    new SelectList(Model.Student, "PK_Student_ID", "Ime"), 
    new { @class="choosen-select", id = "normalDropDown" })
        <input type="submit" name="name" value="submit" />
    </div>
}

@section scripts {
    <script>
    $(function () {
    $("#normalDropDown").chosen({ width: "15%" });
    });    
    </script>
}

1 Ответ

0 голосов
/ 24 октября 2018

Kurs и Students - это отдельные типы вещей;db.Students - это список Students, и вы пытаетесь добавить новый Kurs в этот список напрямую.Я предполагаю, что вы хотите получить конкретного ученика и затем позвонить student.Kurs.Add(kurs), чтобы добавить Kurs в список kurs конкретного ученика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...