MVC Core Popup Many to Many logic - PullRequest
0 голосов
/ 08 мая 2020

У меня есть модели, указанные ниже, и у меня есть простой контроллер, который отображает группы. Я хочу добавить участников в каждую группу с помощью всплывающей страницы. Как я могу этого добиться? мне непонятен сам лог c в ядре EF. может ли кто-нибудь объяснить, как связать пользователей с группой, добавить userId и groupId в таблицу членства

public class Group
{
   public int Id { get; set; }
   public string GroupName { get; set; }
   public virtual ICollection<Membership> Membership { get; set; }

}

public class User
{
   public int Id { get; set; }
   public string Username { get; set; }
   public virtual ICollection<Membership> Membership { get; set; }
}

public class Membership
{
   public int MembershipId { get; set; }
   public int UserId { get; set; }
   public int GroupId { get; set; }
   public DateTime AssignDate { get; set; }

   public Employee Employee { get; set; }
   public Group Group { get; set; }
}

Я дошел до этого момента, я не знаю, как продолжить:

public class MainViewModel
{
    public IEnumerable<Group> Groups { get; set; }
}

Мой контроллер:

    public IActionResult Index()
    {
        var vm = new MainViewModel();

        vm.Groups = _context.Group
                    .Include(u => u.Membership)
                        .ThenInclude(u => u.User);
        return View(vm);
    }
    [HttpPost]
    public IActionResult AddMember(int Id, User user)
    {
        //TODO: Associate member to a group
        return RedirectToAction(nameof(Index));
    }

Мой вид:

    <table class="table">
<thread>
    <tr>
        <th>
            Group
        </th>
        <th>
            Users
        </th>
        <th></th>
    </tr>
</thread>
<tbody>
    @foreach (var item in Model.Groups)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.GroupName)
            </td>
            <td>
                @foreach (var user in item.Membership)
                {
                    @Html.DisplayFor(moelItem => user.User.Username) <br />
                }
            </td>
            <td>
                <button class="btn btn-success" data-toggle="modal" data-target="#item-@item.Id">Add Members</button>
            </td>
        </tr>
    }
</tbody>

 @foreach (var item in Model.Groups)
 {

<div class="modal fade" id="item-@item.Id" tabindex="-1" role="dialog" aria-labelledby="ModalCenterTitle" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <form asp-action="AddMember" asp-controller="Main" method="post">
                <input type="hidden" name="Id" value="@item.Id" />
                <div class="modal-header">
                    Add members to @item.GroupName 
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <div class="input-group mb-3">


                    </div>


                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
                    <input type="submit" class="btn btn-primary form-control" value="Submit" />
                </div>
            </form>
        </div>
    </div>
</div>

}

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