коллекция моделей не отправляется обратно на почту - PullRequest
0 голосов
/ 25 марта 2019

Попытка освоить ASP.net MVC с помощью готового проекта.Когда я пытаюсь отправить данные из коллекции с моей модели с моего вида на контроллер, происходит сбой.(говорит, что коллекция нулевая) У меня есть 3 модели, вовлеченные в процесс:

public class Employee:BaseModel
{
    // alot of properties in here left out...

    public virtual ICollection<EmployeeCompetences> EmployeeCompetences { get; set; }
}

public class EmployeeCompetences: BaseModel
{
    public int EmployeeId { get; set; }
    public int CompetenceId { get; set; }
    public virtual Competence Competence { get; set; }
    public virtual Employee Employee {get; set;}
    public string Level { get; set; }
}

public class Competence: BaseModel
{
    public string Name { get; set; }
    public string CompetenceCategory { get; set; }
}

В моем контроллере я передаю сотруднику представление с текущими уровнями компетенции.

Контроллер:

public ActionResult Competences_Edit(int id = 0)
    {
        if (id == 0)
            return RedirectToAction("Index");
        var employee = employeeService.GetById(id);

        ViewBag.Levels = levelLoader.GetAll(); //Possible values for the user to give to his competence level.

        return View(employee);
    }

Я пытался установить значения в представлении разными способами.ближе всего я прошел через это.

Просмотр:

@model PeopleApplication.BDO.Models.Employee
@using (Html.BeginForm()){

foreach (var item in Model.EmployeeCompetences)
    {
            <div>
                <p>@item.Competence.Name</p>
                @Html.DropDownListFor(model => item, new SelectList(ViewBag.Levels, "Name", "Name", item.Level), new { @class = "btn btn-outline-secondary btn-sm dropdown-toggle", @style = "background-color: white; color: black;" })
            </div>
}

<div class="form-group">
     <div class="col">
        <input type="submit" value="Save" class="btn btn-success" style="float: right" />
    </div>
</div>

}

Также попробовал это с циклом for вместо foreach.

Иэто метод post в моем контроллере:

[HttpPost]
    public ActionResult Competences_Edit(Employee employee)
    {
        if (ModelState.IsValid)
        {
            employeeService.UpdateEntity(employee);

            return RedirectToAction("Index", new { id = employee.Id });
        }

        return RedirectToAction("Competences_Edit", employee.Id);
    }

При отладке набор компетенций сотрудников в сотруднике метода post просто равен нулю.Куда я иду не так?У меня есть похожая страница, которую я редактирую таким же образом, но она не содержит коллекцию в модели, и там этот метод работает нормально.

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