Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 07.03.2015
Сообщений: 19
1

Bind list property

30.10.2016, 05:16. Показов 1443. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Я неудачно пытаюсь вернуть модель после отправки данных на сервер.

Модель:
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
29
30
31
    public class UserReg
    {
        public string Login { get; set; }
        public string Password { get; set; }
        public string PasswordConfirm { get; set; }
        public string Email { get; set; }
        public Languages[] Languages { get; set; }
        public Gender Gender { get; set; }
        public List<ProgLang> ProgLangList { get; set; }
    }
 
    public enum Languages
    {
        English,
        Arabic,
        Japanese,
        German,
        Ukrainian,
        Russian
    }
    public enum Gender
    {
        male,
        female
    }
 
    public class ProgLang
    {
        public string lang;
        public bool Checked;
    }
Контроллер:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        [HttpGet]
        public ActionResult Index()
        {
            UserReg obj = new UserReg();
            obj.ProgLangList = new List<ProgLang>()
            {
                new ProgLang() { lang = "cSharp", Checked = true},
                new ProgLang() { lang = "javaScript", Checked = false},
                new ProgLang() { lang = "java", Checked = true},
                new ProgLang() { lang = "python", Checked = false},
                new ProgLang() { lang = "php", Checked = true},
            };
 
            return View(obj);
        }
 
        [HttpPost]
        public ActionResult Index(UserReg obj)
        {
            return View(obj);
        }
Кусок представления:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        <div>
            Programming languages
            <div class="prog-lang-holder">
                @for (int i = 0; i < Model.ProgLangList.Count; i++)
                {
                    var ProgLang = Model.ProgLangList[i];
                    <label>
                        @Html.HiddenFor(m => Model.ProgLangList[i].lang)
                        @Html.DisplayFor(m => Model.ProgLangList[i].lang)
                        @Html.CheckBoxFor(m => Model.ProgLangList[i].Checked)
                    </label>
                }
            </div>
        </div>
В модели UserReg есть свойство List<ProgLang> ProgLangList, значение которого я никак не могу получить в контроллере.
Мега-плиз, подскажите что делаю не так.
Миниатюры
Bind list property  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2016, 05:16
Ответы с готовыми решениями:

griedview с сылками и цветами, убрать bind
Добрый день, пишу на c# вывод табличных данных, каждая ячейка может содержать текст, всплывающую...

Как исправить ошибку "Cannot bind to the property or column"
Cannot bind to the property or column ФИО пациента: on the DataSource. Parameter name: dataMember...

Property Set/get и List
Привет всем. Хелп говорит, что Property Get и Set могут работать с List. Пытаюсь, не получается. ...

Ошибка при работе с ListBox Could not Get the list propertyInvalid property array index
Добрый день, форумчане, нужна Ваша помощь :) Как воспроизвести: Запустите форму Бронирование...

10
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
30.10.2016, 11:10 2
fatpanda, пришли все представление
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
30.10.2016, 11:49 3
Цитата Сообщение от fatpanda Посмотреть сообщение
Кусок представления:
если эта часть находится в элементе form, и отправляется все POSTом на нужный экшн - то все должно работать

покажите полное представление
0
0 / 0 / 1
Регистрация: 07.03.2015
Сообщений: 19
30.10.2016, 15:46  [ТС] 4
Metall_Version,
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
@model asp.net_mvc_form_test.Models.UserReg
 
@{
    ViewBag.Title = "Index";
}
 
@section Form {
    @using (Html.BeginForm("Index", "Home", null, FormMethod.Post, new { @class = "reg-form" }))
    {
        <h2>Registration form:</h2>
        <div>
            <label for="Login">
                Login
            </label>
            @Html.TextBoxFor(m => Model.Login, new { Value = Model.Login })
        </div>
        <div>
            <label for="Password">
                Password
            </label>
            @Html.PasswordFor(m => Model.Password, new { Value = Model.Password })
        </div>
        <div>
            <label for="PasswordConfirm">
                Confirm password
            </label>
            @Html.PasswordFor(m => Model.PasswordConfirm, new { Value = Model.PasswordConfirm })
        </div>
        <div>
            <label for="Email">
                Email
            </label>
            @Html.TextBoxFor(m => Model.Email, new { Value = Model.Email })
        </div>
        <div>
            <label for="Languages">
                Languages
            </label>
            @Html.ListBoxFor(m => Model.Languages,
                     new MultiSelectList(Enum.GetNames(typeof(Languages)),
                     new string[] { Languages.English.ToString() }))
        </div>
        <div>
            Gender
            <div class="gender-holder">
                <label>Male @Html.RadioButtonFor(m => Model.Gender, Gender.male)</label>
                <label>Female @Html.RadioButtonFor(m => Model.Gender, Gender.female)</label>
            </div>
        </div>
        <div>
            Programming languages
            <div class="prog-lang-holder">
                @for (int i = 0; i < Model.ProgLangList.Count; i++)
                {
                    var ProgLang = Model.ProgLangList[i];
                    <label>
                        @Html.HiddenFor(m => Model.ProgLangList[i].lang)
                        @Html.DisplayFor(m => Model.ProgLangList[i].lang)
                        @Html.CheckBoxFor(m => Model.ProgLangList[i].Checked)
                    </label>
                }
            </div>
        </div>
        <div>
            <button type="submit">Register</button>
        </div>
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
 
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    <link href="~/Content/style.css" rel="stylesheet" />
</head>
<body>
    <div>
        @RenderSection("Form")
    </div>
</body>
</html>
Вот. Как я и говорил проблема только с ProgLangList, с остальными свойствами - порядок.
0
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
30.10.2016, 16:24 5
fatpanda, может потому что он у тебя пустой! т.е. в логине у тебя записано название и ты переадешь потом значение, так же сделай и со списком.

Добавлено через 30 секунд
Цитата Сообщение от fatpanda Посмотреть сообщение
var ProgLang = Model.ProgLangList[i];
ты ведь для этого я так понимаю сохранял, просто допиши
0
0 / 0 / 1
Регистрация: 07.03.2015
Сообщений: 19
30.10.2016, 16:51  [ТС] 6
valdi_korot, прости, но я не совсем понимаю о чем ты. Пожалуйста, приведи пример кода.
0
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
30.10.2016, 19:58 7
fatpanda,
C#
1
2
3
4
5
6
7
8
9
10
11
12
 Programming languages
            <div class="prog-lang-holder">
                @for (int i = 0; i < Model.ProgLangList.Count; i++)
                {
                    var ProgLang = Model.ProgLangList[i];
                    <label>
                        @Html.HiddenFor(m => Model.ProgLangList[i].lang,ProgLang.lang)
                        @Html.DisplayFor(m => Model.ProgLangList[i].lang)
                        @Html.CheckBoxFor(m => Model.ProgLangList[i].Checked,,ProgLang.Checked)
                    </label>
                }
            </div>
0
0 / 0 / 1
Регистрация: 07.03.2015
Сообщений: 19
30.10.2016, 20:12  [ТС] 8
valdi_korot, вообще ничего не поменялось.
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
31.10.2016, 11:04 9
fatpanda, на странице отображается все 5 чек боксов?
и можно увидеть итоговую разметку - которую вы видите в самом браузере
и заодно можно проверить что передается на сервер из браузера при сабмите формы (консоль разработчика вкладка network, если кликнуть на запрос можно увидеть данные которые передаются в теле запроса)
0
0 / 0 / 1
Регистрация: 07.03.2015
Сообщений: 19
31.10.2016, 19:25  [ТС] 10
Лучший ответ Сообщение было отмечено Metall_Version как решение

Решение

Metall_Version, спасибо, я уже разобрался)
C#
1
2
3
4
5
public class ProgLang
    {
        public string lang { get; set; }
        public bool Checked { get; set; }
    }
Надо было поставить автосвойства.
0
2151 / 1288 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
31.10.2016, 22:40 11
Цитата Сообщение от fatpanda Посмотреть сообщение
Надо было поставить автосвойства.
видимо детали работы дефолтного биндера модели
0
31.10.2016, 22:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2016, 22:40
Помогаю со студенческими работами здесь

Property Get и Property Let Странное поведение
Здравствуйте, Господа. Сразу к делу. Написал UserControl, объявил в нём весьма безобидные свойства:...

Конвертировать один элемент из List<List<Class>> в list и string
Как можно перевести один выбранный элемент из List&lt;List&lt;Data&gt;&gt; myList в list и string? Например,...

Linq преобразование List<List<double>> в List<Array>
Доброго времени суток, данный код нужно преобразовать linq выражениями и дописать выборку из ...

Определить предикат Р(List,Х) который истинен если Х состоит из пар элементов списка List,сумма которых больше половины элементов List
Помогите пожалуйста написать программу,буду очень благодарен,заранее спасибо! Определить предикат...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru