Перечисление данных во многих табличных отношениях с использованием .net mvc 5 - PullRequest
1 голос
/ 21 апреля 2019

Я студент-разработчик в Asp.Net MVC.Я делаю небольшие .Net MVC проекты для изучения своих собственных, и я впервые сталкиваюсь со многими во многих отношениях между таблицами.У меня есть две модели, которые имеют отношение ко многим usersModel и groupsModel.Они ассоциируются у usersgroupModel во многих отношениях.В моем домашнем контроллере я попытался перечислить содержимое таблиц с кодами LinkQ.Но я этого не сделал.Когда я запускаю свой проект, в моей Index.cshtml Модель обнуляется.И в этом случае мой взгляд посылает мне ошибку типа

'System.Data.Entity.Infrastructure.DbQuery 1[<>f__AnonymousType2 2 [System.String, System.String]]', но этот словарьтребуется элемент модели типа 'System.Collections.Generic.IEnumerable`1 [Agm.Models.EntityFramework.Groups]' ... *

Что я могу сделать, чтобы вывести свои данные в соответствии с userId и groupIdна моей странице индекса?Не могли бы вы помочь мне в этом вопросе?Спасибо за это.

Модель моих пользователей;

    public class usersModel
        {
    public int userId { get; set; }
    public string userNameSurname { get; set; }
public virtual ICollection<Groups> Groups { get; set; }
    }

Модель моих групп:

 public class groupsModel
    {
 public int groupId { get; set; }
        public string groupName { get; set; }
public virtual ICollection<Users> Users { get; set; }
}

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

public ActionResult Index()
        {   
             var userGroups = from g in db.Groups
                             from u in g.Users
                             select new
                             {
                               g.groupName,
                               g.groupImageUrl
                             };
           return View(userGroups);
        }

Мой индексстраница:

@model IEnumerable<Agm.Models.EntityFramework.Groups>

<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.groupName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.groupImageUrl)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.groupName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.groupImageUrl)
        </td>
    </tr>
}

</table>

1 Ответ

1 голос
/ 23 апреля 2019

создайте модель представления следующим образом:

 public class UsersGroupViewModel
 {
     public string GroupName{ get; set; }
     public string GroupImageUrl{ get; set; }
 }

измените свое действие на это:

public ActionResult Index()
        {   
             var userGroups = (from g in db.Groups
                             from u in g.Users
                             select new UsersGroupViewModel()
                             {
                                GroupName = g.groupName,
                                GroupImageUrl = g.groupImageUrl
                             }).ToList();
           return View(userGroups);
        }

и измените модель представления на эту:

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