Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
1

SelectList при сохранении выдает ошибку несоответствия типов

07.08.2014, 09:07. Просмотров 784. Ответов 17
Метки нет (Все метки)

Имеется таблица в которой есть поля типа byte, int - они хранят данные из справочников. Физически поля таблицы и справочника (другой таблицы) не связаны. Для того чтобы открыть поле со значением,например W = 0, передаю данные справочника через ViewBag:
C#
1
2
3
// ...
ViewBag.W = new SelectList(db.SP_POL, "W", "POL", person.W);
//...
во View'шке открываю соответственно:
C#
1
2
3
4
5
// ...
@Html.LabelFor(model => Model.W)
@Html.DropDownList("W", String.Empty)
@Html.ValidationMessageFor(model => model.W)
// ...
При попытке сохранить данные выдается ошибка: {"Элемент ViewData с ключом \"W\" имеет тип \"System.Byte\", но у него должен быть тип \"IEnumerable<SelectListItem>\"."}
0
Миниатюры
SelectList при сохранении выдает ошибку несоответствия типов  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2014, 09:07
Ответы с готовыми решениями:

При задании в качестве начальной страницы. Приложение выдает ошибку
Народ подскажите мне как корректно задать начальную страницу для ASP NET MVC...

Сервак выдает 500 ошибку при выполеннии ASP файла
Сервак выдает 500 ошибку при выполеннии ASP файла Заранее спасибо

EntityFramework, база данных создается, но выдает ошибку при открытии страницы
public class SiteContextModel : DbContext { public DbSet&lt;PostDb&gt;...

При запуске ASP приложений на локальной машине ИЕ выдает синтаксическую ошибку
При запуске ASP приложений на локальной машине ИЕ выдает синтаксическую...

При отправке почты с помощью CDONTS.NewMail, ASP выдает ошибку 'разрешение отклонено'.
На сервере стоит Exchange сервер. При отправке почты с помощью CDONTS.NewMail,...

17
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
07.08.2014, 09:32 2
Вероятно ViewBag.W, а не "W"
0
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
07.08.2014, 09:38  [ТС] 3
IamRain, должен же быть корректный метод сохранения данных из DropDownList...
0
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
07.08.2014, 09:44 4
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
должен же быть корректный метод
Вообще создается viewmodel в которой хранится:
1.Список ваших объектов, которых можно однозначно идентифицировать по ключу любого типа.
2. Значения ключа выбранного элемента.
Сохранение данных из dropdown - post запрос. Обновление всей страницы, либо ajax-post.
0
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
07.08.2014, 09:51  [ТС] 5
IamRain, элемент W имеет корректное значение 0, DropDownList я использую только для отображения значения справочника. Не понимаю, как передается в список byte'вое значение.

Добавлено через 1 минуту
Цитата Сообщение от IamRain Посмотреть сообщение
Вероятно ViewBag.W, а не "W"
Нет, ключ я указываю верно, через "W"
0
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
07.08.2014, 10:04 6
Model.W какого-типа?
0
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
07.08.2014, 10:05  [ТС] 7
Цитата Сообщение от IamRain Посмотреть сообщение
Model.W какого-типа?
тип byte (имеет значения 0 или 1)
0
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
07.08.2014, 10:11 8
Вообще, вот хороший пример работы с dropdownlistfor:
http://odetocode.com/blogs/scott/arc...p-net-mvc.aspx

Добавлено через 3 минуты
Цитата Сообщение от Trukhanov_VP Посмотреть сообщение
тип byte (имеет значения 0 или 1)
Об этом вам и говорит ошибка. Вьюха отображается c view-модели. -> Первый параметр для dropdownlist - название поля вашей view-модели, которое есть коллекция, чтобы заполнить ваш dropdownlist. Вообще, можно определение класса модели сюда.
0
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
07.08.2014, 10:15  [ТС] 9
IamRain, тоже пример с работы DropDownList
0
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
07.08.2014, 10:27 10
Trukhanov_VP, Можно описание модели.

Добавлено через 3 минуты
Цитата Сообщение от IamRain Посмотреть сообщение
Первый параметр для dropdownlist
Ошибся, второй параметр должен быть коллекцией, а вы передали пустую строку.
0
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
07.08.2014, 10:27  [ТС] 11
C#
1
2
3
4
5
6
7
8
9
public partial class PERSON
{
        public int ID_PERSON { get; set; }
        public string FAM { get; set; }
        public string IM { get; set; }
        public string OT { get; set; }
        public byte W { get; set; }
        public System.DateTime DR { get; set; }
}
0
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
07.08.2014, 10:50 12
Лучший ответ Сообщение было отмечено Trukhanov_VP как решение

Решение

Так мб:
C#
1
@Html.DropDownList("W", ViewBag.W);
Так понял, "W" - сохранить в поле с этим именем в объект Person при отправке данных, второй параметр - должен быть коллекцией, ваш - viewBag.W. Именование запутывает.
1
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
07.08.2014, 11:03  [ТС] 13
IamRain, вот то что мне нужно

Добавлено через 12 минут
IamRain, только Вы забыли добавить
C#
1
@Html.DropDownList("W",ViewBag.W as SelectList)
1
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
07.08.2014, 11:08 14
Да, верно, вы правы.
0
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
07.08.2014, 11:22  [ТС] 15
IamRain, я не знаю в чем дело, но выдает туже ошибку
0
IamRain
1407 / 1254 / 395
Регистрация: 02.08.2011
Сообщений: 3,723
07.08.2014, 11:32 16
скинье проект, если нетрудно - интересно стало . Сейчас уже нет времени, завтра с утра вам отправлю.
0
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
11.08.2014, 12:19  [ТС] 17
IamRain, ошибку устранил, внес изменения в БД (связал таблицы между собой). Проект много весит могу выслать только в ЛС.
0
Trukhanov_VP
37 / 37 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
14.08.2014, 08:41  [ТС] 18
По какой-то причине значения некоторых DropDownListFor выбираются неверно. В чем может быть ошибка?

Добавлено через 18 часов 19 минут
А если пытаюсь вывести так:
C#
1
@Html.DropDownList("R", String.Empty)
то значение выбирается правильно, не понимаю
0
14.08.2014, 08:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2014, 08:41

При попытке удалить запись, выдает ошибку: Microsoft OLE DB Provider for ODBC Drivers error '80004005'
При попытке удалить запись, выдает ошибку: Microsoft OLE DB Provider for ODBC...

При попытке открыть *.asp выдает ошибку Active Server Pages error 'ASP 0201'
Может кто подскажет: проблема с ASP скриптами на WinXP. При попытке открыть...

SelectList выбранный элемент по умолчанию
В контроллере заполняю свойство модели типо SelectList model.Lessons = new...


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

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

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