как отобразить данные из нескольких моделей в макете

#asp.net-mvc-4

#asp.net-mvc-4

Вопрос:

я хочу получить данные из трех групп моделей, проектов и пользовательского профиля. я попытался создать новый класс, который их получит, а затем вызвать этот class1 в качестве модели для использования в макете, но, к сожалению, данные не отображаются..

это класс, который я создал для передачи 3 моделей в представление

 public class Class1 
{

    public IEnumerable <UserProfile> user {get; set;}
    public IEnumerable<Projects> project { get; set; }
    public IEnumerable <Groups> group{ get; set; }
} 
  

здесь, где данные должны отображаться в макете

                     <div id="collapseOne" class="panel-collapse collapse in">
                        <div class="panel-body">

                        @if (Model.group != null)
                        {
                            foreach (var d in Model.group) 

                            { 
                                <div class="panel-body">  @d.GroupName</div>
                             }
                        }
                    </div>
                </div>
  

в контроллере

     databaseDBEntities1 db = new databaseDBEntities1();

    public ActionResult Index(Groups g , Projects P , UserProfile U)
    {
        Class1 c = new Class1();

        return View(c);
    }
  

Ответ №1:

вы обрабатываете пустой объект без настройки свойств:

  public ActionResult Index(Groups g , Projects P , UserProfile U)
    {
        Class1 c = new Class1();
        c.user  = U;
        c.project = P;
        c.group =  g;

        return View(c);
    }
  

или:

 public class Class1 
{

    public List<UserProfile> user {get; set;}
    public list<Projects> project { get; set; }
    public List<Groups> group{ get; set; }
} 

 public ActionResult Index()
        {
            Class1 c = new Class1();
            c.user  = db.UserProfile.ToList();
            c.project = db.Projects.ToList();
            c.group =  db.Groups.ToList();

            return View(c);
        }
  

Ответ №2:

Вам нужно установить группы, проекты и пользовательский профиль в Class1 следующим образом.

 databaseDBEntities1 db = new databaseDBEntities1();
Class1 c = new Class1();
c.user = db.UserProfile();
c.project = db.Projects();
c.group = db.Groups();
return View(c);
  

Если методы индексирования уже используют эти объекты, вы также можете установить эти свойства, как @ehsan mansion it.

 Class1 c = new Class1();
c.user  = U;
c.project = P;
c.group =  g;