Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
IvanIvanov2016
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 16
1

Несколько моделей в одном представлении

29.02.2016, 00:10. Просмотров 1549. Ответов 10
Метки нет (Все метки)

Здравствуйте! Только начал разбираться в ASP.NET MVC. Нужно сделать страницу, на которой будет слайдер, блок новостей и объявления. Сделал 3 модели и связал их с БД. В контроллере определил метод и привязал вьюшку. Попытался в ней выводить данные из разных моделей. И ничего у меня не вышло. Тогда попытался создать 3 строго типизированных частичных представления и встроить их в обычное, но тоже получил «желтую» страницу. Объяснить, пожалуйста, как вообще это делается в MVC?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2016, 00:10
Ответы с готовыми решениями:

Несколько моделей в одном представлении: возможно ли
Возможно ли (и правильно ли) отображать в представлении несколько моделей? Или сама MVC требует...

Данные из разных таблиц в одном представлении
Здравствуйте. Есть 4 модели: public class User { public int...

Как отобразить 2 модели в одном представлении
Добрый день. У меня вопрос... Я сделала 2 модели данных, соответственно 2 таблички в БД, 2...

Как реализовать отображение 3х таблиц бд в одном представлении
Есть 3 таблицы базы данных: Products, Category и Bonus. Их описываю 3 модели соответственно ...

Добавление нескольких разных объектов в одном представлении
Добрый день, интересует следующее: Есть сущность "Объявление" которое содержит идентификатор...

10
Elarion
7 / 7 / 1
Регистрация: 12.02.2016
Сообщений: 45
29.02.2016, 00:50 2
Я это делаю через ViewModel - создаю отдельную модель для вьюшки. Вообще где-то читал что для каждой вьюшки рекомендуется создавать отдельную ViewModel, a не передавать туда Model(которая используется для работы с БД).

Когда создаете ViewModel - вы можете закинуть туда данные и о слайдер и блок новостей и объявления.
Так же советую для каждой каждой детали страницы(если смотреть по функционалу) сделать отдельную PartialView.

К примеру так
@model MyViewModel
@Html.Partial("_Slider", Model.Blog);
@Html.Partial("_News", Model.News);
@Html.Partial("_Messages", Model.Messages);

Где _Slieder, _News, _Messages - partial views.
1
IvanIvanov2016
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 16
29.02.2016, 12:59  [ТС] 3
Elarion, c частичными представлениями все понятно.


Когда создаете ViewModel - вы можете закинуть туда данные и о слайдер и блок новостей и объявления.
Не могу никак въехать, что в MyViewModel писать. Можно маленький пример?
0
Elarion
7 / 7 / 1
Регистрация: 12.02.2016
Сообщений: 45
29.02.2016, 13:54 4
К примеру можно так:
C#
1
2
3
4
5
6
7
8
public class MyViewModel
{
    public Messages messges;
    public Slider slider;
    public News news;   
    
    public string AnyStuffHere;     
}
Где Messages, Slider, News - ваши модели. Можно просто часть данных передать, если вам полностью модель там не нужна.
1
29.02.2016, 13:54
IvanIvanov2016
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 16
29.02.2016, 14:24  [ТС] 5
Elarion,
Получаю ошибку компиляции

@Html.DisplayNameFor(model => model.Date)


Например, мои модели:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class MyModel
    {
        [Key]
        [HiddenInput]
        public int Id { get; set; }   
        [Display(Name = "Дата")]
        [Required(ErrorMessage = "Укажите дату")]
        [DataType(DataType.Date)]
        public DateTime? Date { get; set; }
 
        [Display(Name = "Заголовок")]
        [Required(ErrorMessage = "Укажите заголовок")]
        public string Title { get; set; }
        и т.д.
 
    }
 
public class ImageModel
    {
        [Key]
        [HiddenInput]
        public int ImageId { get; set; }
        [Display(Name = "Изображение")]
        public string ImagePath { get; set; }
        [Display(Name = "Заголовок")]
        public string ImageTitle { get; set; }
        и т.д.
    }
Тогда создаю каталог ViewModels в нем класс AllViewModel:
C#
1
2
3
4
5
   public class AllViewModel
    {
        public MyModel mymodel;
        public ImageModel imagemodel;
    }
В представлении:

C#
1
2
3
4
5
6
7
8
9
@model IEnumerable<MyApplication.ViewModels.AllViewModel>
@foreach (var item in Model)
    {
 
                @Html.DisplayFor(modelItem => item.Date)
                @Html.DisplayFor(modelItem => item.Title)
 
    }
и т.д.
0
Elarion
7 / 7 / 1
Регистрация: 12.02.2016
Сообщений: 45
29.02.2016, 15:27 6
В контроллере инициализировали все?
1
IvanIvanov2016
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 16
29.02.2016, 15:35  [ТС] 7
Elarion,
C#
1
 private MyModelDBContext db = new MyModelDBContext();
Контекст
C#
1
2
3
4
5
6
7
    public class MyModelDBContext : DbContext
    {
 
       public DbSet<MyModel> MyModels { get; set; }
        public DbSet<ImageModel> ImageModels { get; set; }
     
    }
0
Elarion
7 / 7 / 1
Регистрация: 12.02.2016
Сообщений: 45
29.02.2016, 15:50 8
А ViewModel в контроллере, что вы во вьюшку передаете? Поставьте точку останова, посмотрите нету ли там нулей.
Или у вас программа даже не запускается?
1
IvanIvanov2016
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 16
29.02.2016, 16:13  [ТС] 9
Elarion, спасибо, понял свою ошибку. Передавал MyModel mymodel
У меня пока слабо все это получается. Читаю книгу ASP.NET MVC 5 с примерами на C# 5.0 для профессионалов, 5-е издание (Адам Фримен).
Также пользуюсь ресурсами:
http://metanit.com
http://professorweb.ru
И слушаю курс http://itvdn.com/ru/video/mvc/mvc-introduction

Скажите, где еще есть хорошая информация для начинающих (так, чтобы все по полкам было разложено)?
0
Elarion
7 / 7 / 1
Регистрация: 12.02.2016
Сообщений: 45
29.02.2016, 16:44 10
Я там же читаю(metanit,web), еще гугл отправляет на разные форумы(на английском в основном).
1
IvanIvanov2016
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 16
02.03.2016, 15:00  [ТС] 11
Вот еще ссылка: http://blog.yourpartners.ru/
0
02.03.2016, 15:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2016, 15:00

Несколько моделей
Вопрос такой: Как на одной странице можно использовать сразу несколько моделей, и возможно ли это...

Несколько изображений в представлении
Добрый день! в бд записываю адреса картинок, которые лежать в папке проекта. У одного товара...

Несколько моделей в одно представление
Подскажите пожалуйста, как исправить ошибку... Invalid object name 'dbo.FilialComments'. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru