С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 4
Регистрация: 05.05.2017
Сообщений: 521

Пустой объект в POST функции контроллера

09.06.2019, 23:24. Показов 4501. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
View для удаления сгенерировано студией. Для обработки написал в контроллере две функции.
HTML5
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
69
70
71
72
@model BankOperation.vklady
 
@{
    ViewBag.Title = "DeleteVklad";
}
 
<h2>Удалить Вклад</h2>
 
<h3>Вы уверены, что хотите удалить запись?</h3>
<div>
    <h4>Вклад</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.name)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.name)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.sum)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.sum)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.procent)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.procent)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.dlitelnost)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.dlitelnost)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.dateEnd)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.dateEnd)
        </dd>
 
        <dt>
            @Html.DisplayNameFor(model => model.vidy.name)
        </dt>
 
        <dd>
            @Html.DisplayFor(model => model.vidy.name)
        </dd>
 
    </dl>
 
    @using (Html.BeginForm()) {
        @Html.AntiForgeryToken()
 
        <div class="form-actions no-color">
            <input type="submit" value="Delete" class="btn btn-default" /> |
            @Html.ActionLink("Назад", "Vklad")
        </div>
    }
</div>
Первый передает данные в представление. Данные отображаются. При нажатии на кнопку удалить - в post обработчик приходит пустой объект - все поля null. В чем может быть причина?
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
       [Authorize]
        public ActionResult DeleteVklad(int id)
        {
            if (GetRoleOfUser() != "Oper")
            {
                ViewBag.Message = "Страница доступна только операционисту";
            }
            vklady item = context.vklady.Where(v => v.code == id).FirstOrDefault();
            ViewBag.Vid = new SelectList(context.vidy, "code", "name");
            doNavBar();
            return View(item);
        }
        [HttpPost]
        [Authorize]
        public ActionResult DeleteVklad(vklady item)
        {
            if (GetRoleOfUser() != "Oper")
            {
                ViewBag.Message = "Страница доступна только операционисту";
            }
            var delete_item = context.vklady.Find(item.code);
            context.vklady.Remove(delete_item);
            context.SaveChanges();
            return RedirectToAction("Vklad", "Home");
        }
класс данных выглядит след образом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    public partial class vklady
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public vklady()
        {
            this.gotovy_vklad = new HashSet<gotovy_vklad>();
        }
    
        public int code { get; set; }
        public Nullable<int> codeVid { get; set; }
        public string name { get; set; }
        public Nullable<double> sum { get; set; }
        public Nullable<double> procent { get; set; }
        public Nullable<double> dlitelnost { get; set; }
        public Nullable<System.DateTime> dateEnd { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<gotovy_vklad> gotovy_vklad { get; set; }
        public virtual vidy vidy { get; set; }
    }
}
Добавлено через 21 минуту
Добавил поле для id - оказалось что в контроллер передается только id а не объект. Как так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
[HttpPost]
        [Authorize]
        public ActionResult DeleteVklad(vklady item, int id)
        {
            if (GetRoleOfUser() != "Oper")
            {
                ViewBag.Message = "Страница доступна только операционисту";
            }
            var delete_item = context.vklady.Find(id);
            context.vklady.Remove(delete_item);
            context.SaveChanges();
            return RedirectToAction("Vklad", "Home");
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2019, 23:24
Ответы с готовыми решениями:

Как передать из одного контроллера объект модели в строго типизированное представление другого контроллера
Есть строго типизированное представление в контроллере Main, в методе ListOrders. Как в него можно передать модель, класса Customer из...

Пустой POST
&lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt; &lt;script type=&quot;text/javascript&quot;...

Переход на метод контроллера при POST запросе
Добрый день. Есть метод в контроллере, срабатывает по POST запросу. Как из этого метода (т.е. результатом его работы) вызвать метод Index...

3
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
10.06.2019, 18:27
Pantheonptz,
форма отправляет только значения элементов Input , которые должны располагаться внутри тега Form.
0
1 / 1 / 4
Регистрация: 05.05.2017
Сообщений: 521
12.06.2019, 00:04  [ТС]
единственный инпут в форме это кнопка <input type="submit" value="Delete" class="btn btn-default" />Откуда тогда береься id, которое передается в контроллер?
0
HF
 Аватар для HF
1307 / 885 / 200
Регистрация: 09.09.2011
Сообщений: 2,598
Записей в блоге: 2
12.06.2019, 20:30
Лучший ответ Сообщение было отмечено Pantheonptz как решение

Решение

Цитата Сообщение от Pantheonptz Посмотреть сообщение
Откуда тогда береься id, которое передается в контроллер?
Есть правила привязки данных - откуда и в каком порядке ищутся данные из приходящего запроса.
Можно вот здесь тоже почитать: Управление привязкой - Источники привязки
Повидимому где-то этот Id присутствует. Например в строке запроса (QueryString).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2019, 20:30
Помогаю со студенческими работами здесь

Добраться до типизированной модели из метода контроллера Post
Посмотрел примеры, сделал аналогично. Но при заходе в метод пост переменная model существует, но все её значения дефолтны (null). Сначала...

Пустой POST запрос
Прошу помощи у высших умов) Есть такой скрипт, который принимает POST запрос и отсылает сообщение на почту yandex. &lt;?php ...

Пустой POST-запрос
Всем доброго времени суток! Пытаюсь прикрутить мерчант к своему сайту. Все просто. Отправляется форма - пользователь платит - данные...

Открытие второго контроллера после удачного POST запроса
При старте программы у меня открывается loginWindowController, там я ввожу логин и пароль. После нажатия на кнопку войти отправляются два...

По нажатию на кнопку submit не вызывается POST метод контроллера
Здравствуйте, у меня проект ASP.NET MVC (Framework), на странице Index.html есть кнопка &lt;form action=&quot;/Home/DownloadFile&quot;...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru