Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885

Передать одно значение из формы в метод

21.03.2017, 16:20. Показов 1508. Ответов 2

Студворк — интернет-сервис помощи студентам
У меня есть представление:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form asp-action="Buy" asp-controller="Home" asp-anti-forgery="true">
    <table class="table">
        <tr>
            <th>Наименование</th>
            <th>Количество</th>
            <th>Цена</th>
            <th></th>
        </tr>
 
        @foreach (var product in products)
            {
            <tr>
                <td>@product.Name</td>
                <td>@product.Quantity</td>
                <td>@product.Cost</td>
                <td>
                    <input type="number" name="buy" hidden="hidden" value="@product.Cost" />
                    <input type="submit" value="Купить" class="btn btn-default" />
                </td>
            </tr>
        }
    </table>
</form>
И метод, принимающий значение из формы:
C#
1
2
3
4
5
        [HttpPost]
        public async Task<IActionResult> Buy(decimal? buy)
        {
           // Какая-то логика
        }
Но он всегда принимает null.
Прошу помощи, что не так?

Добавлено через 29 минут
Попробовал передать побольше параметров:
C#
1
2
3
4
5
6
7
8
9
10
                <td>@product.Name</td>
                <td>@product.Quantity</td>
                <td>@product.Cost</td>
                <td>
                    <input type="number" name="product.Cost" hidden="hidden" value="@product.Cost" />
                    <input type="text" name="product.Name" hidden="hidden" value="@product.Name" />
                    <input type="number" name="product.Id" hidden="hidden" value="@product.Id" />
                    <input type="number" name="product.Quantity" hidden="hidden" value="@product.Quantity" />
                    <input type="submit" value="Купить" class="btn btn-default" />
                </td>
Все значения передаются, кроме product.Cost... Что не так, product.Cost это decimal.

Добавлено через 10 минут
Решил проблему, передавая Id продукта.
C#
1
2
<input type="number" name="id" hidden="hidden" value="@product.Id" />
<input type="submit" value="Купить" class="btn btn-default" />

Не по теме:

Не совсем решение проблемы, но передавать Id, думаю, будет правильнее. Суть проблемы в decimal.



Добавлено через 45 минут
Ну и выложу, окончательное решение. А вдруг...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<table class="table">
    <tr>
        <th>Наименование</th>
        <th>Количество</th>
        <th>Цена</th>
        <th></th>
    </tr>
 
    @foreach (var product in products)
            {
        <tr>
            <td>@product.Name</td>
            <td>@product.Quantity</td>
            <td>@product.Cost</td>
            <td>
                <form asp-action="Buy" asp-controller="Home" asp-anti-forgery="true">
                    <input type="number" name="id" hidden="hidden" value="@product.Id" />
                    <input type="submit" value="Купить" class="btn btn-default" />
                </form>
            </td>
        </tr>
    }
</table>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.03.2017, 16:20
Ответы с готовыми решениями:

Как передать в метод формы данные из другой формы?
Народ, подскажите юзеру: создал на Visual C++ 2005 с помощью designer'а Form1 с единственной кнопкой на ней. Вызываю по нажатию этой...

Как передать из combobox одно значение (id), отображая другое (name)?
Задаю отображаемое значение в DisplayMember и фактическое в ValueMember. Обращаюсь, для получения id, к ValueMember, но запрос не...

Два окна и одно значение MFC: Как передать строку в первое окно?
Доброе время суток! Не могу понять и разобраться. Есть дав диалоговых окна. На первом окне есть кнопка, по нажатию которой открывается...

2
[Bicycle Reinventor]
 Аватар для Exerion
332 / 270 / 109
Регистрация: 19.10.2011
Сообщений: 668
Записей в блоге: 2
21.03.2017, 17:05
И как будет себя вести ОДНА форма, внутри которой куча одинаковых input'-ов с одинаковыми именами, и куча одинаковых кнопок submit с одинаковыми именами? Это нормально вообще по вашему?
Справки ради, тег input типа number в html5 по умолчанию имеет шаг 1, т.е. оперирует целыми числами. Как он себя будет вести, если ему попытаться дробное дать - непредсказуемо. Кроме того до сих пор не все браузеры поддерживают тип инпута number.
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
21.03.2017, 21:16  [ТС]
Цитата Сообщение от Exerion Посмотреть сообщение
И как будет себя вести ОДНА форма, внутри которой куча одинаковых input'-ов с одинаковыми именами, и куча одинаковых кнопок submit с одинаковыми именами?
Что не так, каждый инпут в своей форме.
C#
1
2
3
4
                <form asp-action="Buy" asp-controller="Home" asp-anti-forgery="true">
                    <input type="number" name="id" hidden="hidden" value="@product.Id" />
                    <input type="submit" value="Купить" class="btn btn-default" />
                </form>
Если отвечать прямо на вопрос -- он должен передать массив этих инпутов с одинаковыми именами.
C#
1
2
3
4
5
<input type="number" name="id" hidden="hidden" value="@product.Id" />
<input type="number" name="id" hidden="hidden" value="@product.Id" />
<input type="number" name="id" hidden="hidden" value="@product.Id" />
<input type="number" name="id" hidden="hidden" value="@product.Id" />
<input type="submit" value="Купить" class="btn btn-default" />
Передаст массив id типа number со значением @product.Id
И ловить его лучше в int?[] id
Цитата Сообщение от Exerion Посмотреть сообщение
куча одинаковых кнопок submit
Проблема давно решена =)
В изначальном варианте @product.Id передавало значения с первой итерации.

Добавлено через 4 минуты
Цитата Сообщение от Exerion Посмотреть сообщение
тип инпута number.
Спасибо, но и на это есть простое решение вида:
C#
1
2
3
string decimalNum = "4";
decimal.TryParse(decimalNum, out var newNum);
Console.WriteLine(newNum);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2017, 21:16
Помогаю со студенческими работами здесь

Как передать переменные в метод формы?
В моем случае необходимо передать координаты (int x, int y) в метод формы, не обьявляя их полями, через аргумент это сделать также не...

Метод с random всегда возвращает одно значение
Есть метод, который принимает массив строк, и должен вернуть рандомную строку. static class Class { public static string...

Метод постоянно возвращает одно и тоже значение
Питаюсь реализовать чат на сокетах с использованием JavaFX. По неизвестной мне причине метод public static String getMsg() (который я...

Как отправить из формы только одно значение?
подскажите как можно передать один элемент формы отдельно? К примеру так: &lt;form action=&quot;index.php?&quot;...

Передать значение в метод
Не могу передать в метод MultRange два значения: idMin и idMax из метода MinMaxId. Ведь return я так понимаю может только одно значение...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru