У меня есть DropDownList с командами, который заполняется с помощью свойства Id группы. У каждой команды есть игроки, и моя задача - создать матч, где я могу выбрать команду из DropDownList, а также выбрать игроков для выбранной команды.
Вот изображение идеи
Match Model:
public class Match
{
[Key,Column(Order = 0)]
public int Id { get; set; }
[Key,Column(Order = 1)]
public int HostId { get; set; }
public virtual Team Host { get; set; }
[Key,Column(Order = 2)]
public int GuestId { get; set; }
public virtual Team Guest { get; set; }
[DataType(DataType.DateTime)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy HH:mm}")]
public DateTime MatchTime { get; set; }
public string MatchPlace { get; set; }
public IEnumerable<Result> Results { get; set; }
}
Match Controller (только действие CreateMatch):
public IActionResult CreateMatch()
{
ViewBag.HostId = new SelectList(_context.Teams, "Id", "Name");
ViewBag.GuestId = new SelectList(_context.Teams, "Id", "Name");
return View();
}
ViewBag содержит, например, HostId, который позволит мне получить доступ к базе данных для получения команд и командных игроков. Я не знаю, как получить доступ к значению ViewBag.
CreateMatch View:
@model FootballMatchesManager.Models.Match
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Create</h2>
@using (Html.BeginForm("Save","Matches"))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Match</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="container">
<div class="row">
<div class="col-sm">
<div class="form-group">
@Html.LabelFor(model => model.HostId, "Host", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.HostId, ViewBag.HostId as SelectList, "---Select Team---", new { @class = "form-control"})
@Html.ValidationMessageFor(model => model.HostId, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="col-sm">
<div class="form-group">
@Html.LabelFor(model => model.MatchPlace, "Place", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.MatchPlace, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.MatchPlace, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.MatchTime, "Time", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.MatchTime, new { htmlAttributes = new { @class = "form-control"} })
@Html.ValidationMessageFor(model => model.MatchTime, "", new { @class = "text-danger" })
</div>
</div>
</div>
<div class="col-sm">
<div class="form-group">
@Html.LabelFor(model => model.GuestId, "Guest", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.GuestId, ViewBag.GuestId as SelectList, "---Select Team---", new { @class = "form-control"})
@Html.ValidationMessageFor(model => model.GuestId, "", new { @class = "text-danger" })
</div>
</div>
</div>
</div>
<div class="position-relative" style="top:200px;float:right">
<div class="form-group" >
<div class="col-md-offset-2 col-md-10" style="display:inline">
<button type="submit" class="btn btn-primary" >Save</button>
@Html.ActionLink("Cancel", "Index", "Matches", null, new { @class = "btn btn-danger" })
</div>
</div>
</div>
</div>
</div>
}
Пока все работает по плану, но я застрял, когда мне нужно добавить спецификацию c игроков на матч