I am doing CRUD operations on a Master Detail models Team and TeamMember using modal popup. I followed this post to perform the Create operation and it is ok, now i am doing the Detail operation:
TeamController:
public IActionResult Detail(int id)
{
Team team = _dbcontext.Team
.Include(a => a.TeamMembers)
.Where(e => e.TeamId == id).FirstOrDefault();
return PartialView("_DetailTeamPartialView", team);
}
Index.cshtml detail button:
<button class="btn btn-success" data-toggle="modal" data-target="@("#DetailTeam-"+item.TeamId)" data-url="@Url.Action($"Detail/{item.TeamId}")">Detail</button>
@await Html.PartialAsync("_DetailTeamPartialView", item)
_DetailTeamPartialView.cshtml:
@model Team
@{
ViewData["Title"] = "_DetailTeamPartialView";
}
<div class="modal fade" role="dialog" tabindex="-1" id="@("DetailTeam-"+Model.TeamId)" aria-labelledby="DetailTeamLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog modal-xl modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Detail Team</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="javascript:window.location.reload()">
<span aria-hidden="true">×</span>
</button>
</div>
<div>
<dl class="row">
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TeamName)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TeamName)
</dd>
.......
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TeamMembers)
</dt>
<dd class="col-sm-10">
<table class="table table-bordered table-sm">
<thead>
<tr>
<th>Member name</th>
<th>Birth date</th>
</tr>
</thead>
<tbody>
@for (int i = 0; i < Model.TeamMembers.Count; i++)
{
<tr>
<td>
<input asp-for="@Model.TeamMembers[i].MemberName" class="form-control-plaintext" readonly />
</td>
<td>
<input asp-for="@Model.TeamMembers[i].BirthDate" class="form-control-plaintext" readonly />
</td>
</tr>
}
</tbody>
</table>
</dd>
</dl>
</div>
</div>
</div>
</div>
This code displays only team details and doesn't show the TeamMember details. Any help??
EDIT these are the classes:
public class Team
{
[Key]
public int TeamId { get; set; }
[Required]
public string TeamName { get; set; }
public virtual List<TeamMember> TeamMembers { get; set; } = new List<TeamMember>();
}
public class TeamMember
{
[Key]
public int TeamMemberId { get; set; }
[Required]
public string MemberName{ get; set; }
[Required]
public DateTime BirthDate{ get; set; }
[ForeignKey("TeamId")]
public int TeamId { get; set; }
public virtual Team Team{ get; set; }
}
'Model.TeamMembers.Count' in '@for (int i = 0; i < Model.TeamMembers.Count; i++)' return 0 why??