Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 602
1

Получаю ошибку "object" не содержит определения для "ID"

29.03.2017, 12:08. Показов 3321. Ответов 21
Метки нет (Все метки)

Здравствуйте! Делаю простенький пример, для понимания, как работает вся эта кухня в ASP.NET MVC, данные берутся из SQL с помощью EF.
Вот такая View
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>Проба пера</head>
<body>
    <table>
        @foreach(var u in ViewBag.ListUuns)
        {
            <tr>
                <td>@u.ID</td>
                <td>@u.DateTime</td>
                <td>@u.Volume</td>
            </tr>
        }
    </table>
</body>
</html>
Контроллер
C#
1
2
3
4
5
6
7
8
9
10
11
public class HomeController : Controller
{
    UunContex db = new UunContex();
    public ActionResult Index()
    {
        var listUuns = from u in db.unns
                            select u;
        ViewBag.ListUuns = listUuns;
        Return View();
    }
}
Ставил брейкпоинт на 6 строке представления, смотрел в u у меня лежит экземпляр модели с данными из SQL таблицы, поле ID присутствует и содержит значение. Однако на строке
HTML5
1
<td>@u.ID</td>
вылетает ошибка "object" не содержит определения для "ID"
Что я делаю не так?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2017, 12:08
Ответы с готовыми решениями:

Выдает ошибку "HttpContextBase не содержит определения для GetOwinContext"
public ApplicationSignInManager SignInManager { get { ...

Не корректно работает допустимый диапазон для double [Range(typeof(double), "0,00", "49,99")]
Здравствуйте. Имеется простой класс: public class AutoPart { public...

Ошибка "'System.Web.Mvc.HtmlHelper<dynamic>" не имеет применимого метода с именем "ActionLink"
Всем привет непойму где ошибка &lt;ul&gt; @foreach (var item in Model) { &lt;li&gt; ...

Тип "BookContext" не может быть использован как параметр типа "TContext" в универсальном методе Database.SetInitializer
помогите пожалуйста, как исправить эту ошибку Ошибка CS0311 Тип &quot;BookStore.Models.BookContext&quot;...

21
90 / 90 / 44
Регистрация: 20.04.2008
Сообщений: 331
29.03.2017, 12:09 2
Linq to entities select distinct foreach
сегодня только обсуждали
1
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 602
29.03.2017, 12:39  [ТС] 3
Цитата Сообщение от off Посмотреть сообщение
сегодня только обсуждали
Что то я там не понял ничего
Обсуждают ViewModel, хотя это понятие относится к паттерну MVVM. В MVC такого ведь нет, я только начал MVC изучать после MVVM поэтому запутался так.
Цитата Сообщение от off Посмотреть сообщение
@string.Format("{0} - {1}", user.Name, user.Age)

@foreach(var user in (List<User>)ViewBag.Users)
Из этого я тоже ничего не понял. Можно чуть поподробнее пояснить для тех кто в танке?
Цитата Сообщение от yurickas Посмотреть сообщение
И передавай лучше не через ViewBag, а через модель.
еще там говорилось про передачу через модель - это как вообще?
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
29.03.2017, 12:51 4
Это называется берешь книжку по ASP.Net MVC 5 и изучаешь. А перед этим берешь книжку по C# и тоже изучаешь. Ну, или пива выпей и забей.
0
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 602
29.03.2017, 12:56  [ТС] 5
Цитата Сообщение от yurickas Посмотреть сообщение
берешь книжку по ASP.Net MVC 5 и изучаешь
Я так и сделал, попробовал по книге и не работает, поэтому на форуме и спросил.
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
29.03.2017, 12:59 6
А. Фримен ProASP.NET MVC 5
русскоговорящую книгу пока не видел. На английском найти - гугл в помощь.
0
Эксперт .NET
9435 / 6804 / 1093
Регистрация: 21.01.2016
Сообщений: 25,826
29.03.2017, 13:34 7
Chizel, хоть это и звучит не очень доброжелательно, но ответ на твой вопрос действительно можно найти почитав буквально первые пару глав любого учебника по ASP.NET MVC.

Т.е. твой вопрос - даже не вопрос. Не вижу смысла разжёвывать то, что ты сам сможешь прочитать и понять (быстро). Это не какой-то сложный и редкий сценарий, это - основа основ.
1
90 / 90 / 44
Регистрация: 20.04.2008
Сообщений: 331
29.03.2017, 13:55 8
Кури "строго типизированные представления"
1
Эксперт .NET
9435 / 6804 / 1093
Регистрация: 21.01.2016
Сообщений: 25,826
29.03.2017, 14:02 9
Chizel, в общем, тебе нужно передавать в представление некоторый класс (именуемый ViewModel - никакого отношения к MVVM, тупо DTO), а не ViewBag.
1
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 602
29.03.2017, 14:35  [ТС] 10
Usaga, я реально запутался вначале только потому, что ViewModel для меня это последние две буквы VM в MVVM. Поэтому читая сообщение из темы, ссылку на которую мне дали, я понять не мог зачем VM вообще куда-то передавать, откуда оно вообще взялось в MVC. Смотря на код класса VM я видел, что это обычная Model, почему ее называют VM от меня ускользало вот и навело тень на плетень
Я уже понял, что передавать нужно Model в представление. Я тащу данные из SQL с помощью EF и в моем случае получается, что я в представление пихаю не одну Model (экземпляр класса), а несколько этих экземпляров (которые я потом в цикле и хочу перебрать), потому что из SQL я беру несколько строк, а каждая строка это экземпляр класса модели. Все вроде понятно до этого момента. Далее неясности начинаются, что писать в представлении после @Model? Если бы я один экземпляр класса передавал в представление, то я бы его и указал
HTML5
1
@Model Test.Models.Uun
но у меня несколько экземпляров этого класса. Какой это тип данных? Они ведь не складываются в обычный массив или список.
0
Эксперт .NET
9435 / 6804 / 1093
Регистрация: 21.01.2016
Сообщений: 25,826
29.03.2017, 14:39 11
Chizel, всё складывается в обычный массив или список:

HTML5
1
@Model IEnumerable<Test.Models.Uun>
Но лучше упаковать это дело в свою отдельную модель.
1
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 602
29.03.2017, 15:02  [ТС] 12
Цитата Сообщение от off Посмотреть сообщение
Кури "строго типизированные представления"
Да, как раз сейчас читаю про это
Usaga, ну, вроде заработало, даже выводятся данные, но перед ними выводится весь sql запрос модифицированный EF из LINQ это почему так? Вот код представления
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Model List<Test.Models.Unn>
@{
        Layout = null;
   }
<html>
<head>Проба пера</head>
<body>
    <table>
        @foreach(Test.Models.Uun u in Model)
        {
            <tr>
                <td>@u.ID</td>
                <td>@u.DateTime</td>
                <td>@u.Volume</td>
            </tr>
        }
    </table>
</body>
</html>
Добавлено через 4 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Но лучше упаковать это дело в свою отдельную модель.
То есть написать отдельную модель в которой будет список, а в контроллере создать экземпляр этого класса и натолкать в его список все из EF?
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
29.03.2017, 15:07 13
точно, и мы вернемся ко 2 ответу в этой ветке. Сегодня это уже обсуждали
0
Эксперт .NET
9435 / 6804 / 1093
Регистрация: 21.01.2016
Сообщений: 25,826
29.03.2017, 15:07 14
Chizel, не совсем я понял, что и где выводится.

Цитата Сообщение от Chizel Посмотреть сообщение
То есть написать отдельную модель в которой будет список, а в контроллере создать экземпляр этого класса и натолкать в его список все из EF?
0
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 602
29.03.2017, 15:12  [ТС] 15
Usaga, ну, после запуска приложения в браузере вот это выводится
Миниатюры
Получаю ошибку "object" не содержит определения для "ID"  
0
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 602
29.03.2017, 15:16  [ТС] 16
Цитата Сообщение от yurickas Посмотреть сообщение
точно, и мы вернемся ко 2 ответу в этой ветке. Сегодня это уже обсуждали
Говорю ведь - запутался
0
90 / 90 / 44
Регистрация: 20.04.2008
Сообщений: 331
29.03.2017, 15:40 17
Событие типа OnActionExecuted никак не обрабатываете?
0
31 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 602
29.03.2017, 16:20  [ТС] 18
Цитата Сообщение от off Посмотреть сообщение
Событие типа OnActionExecuted никак не обрабатываете?
нет, а надо? Просто делаю примитивное приложение, чтобы понять как это работает.
0
90 / 90 / 44
Регистрация: 20.04.2008
Сообщений: 331
29.03.2017, 16:39 19
В данном случае не надо, просто хотел понять, откуда этот запрос в представлении появляется
0
Эксперт .NET
9435 / 6804 / 1093
Регистрация: 21.01.2016
Сообщений: 25,826
29.03.2017, 16:48 20
Лучший ответ Сообщение было отмечено Chizel как решение

Решение

Chizel, @Model нужно с маленькой буквы писать: @model.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2017, 16:48

Элемент модели, переданный в словарь, имеет тип "Int32", но для этого словаря требуется элемент модели типа "Calc"
Текст ошибки: System.InvalidOperationException: Элемент модели, переданный в словарь, имеет тип...

Почему возникает ошибка "Invalid object name"
Помогите новичку &quot;обсосать&quot; этот странный ASP.NET MVC. Цель вывести данные в предсталение из новой...

Использование класса из модели и ошибка "В файле допускается только один оператор "model"
Подскажите, в представлении стандартно использую вызов класса модели @model ...

Класс: создать отдельный файл для классов "Student.cs".
создать отдельный файл для классов Student.cs”. в классе записать следующие свойства: - ID...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru