Попытка освоить 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 просто равен нулю.Куда я иду не так?У меня есть похожая страница, которую я редактирую таким же образом, но она не содержит коллекцию в модели, и там этот метод работает нормально.