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

Узнай цену своей работы

Формулировка задачи:

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

Не по теме:

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

Ну и выложу, окончательное решение. А вдруг...
Листинг программы
  1. <table class="table">
  2. <tr>
  3. <th>Наименование</th>
  4. <th>Количество</th>
  5. <th>Цена</th>
  6. <th></th>
  7. </tr>
  8. @foreach (var product in products)
  9. {
  10. <tr>
  11. <td>@product.Name</td>
  12. <td>@product.Quantity</td>
  13. <td>@product.Cost</td>
  14. <td>
  15. <form asp-action="Buy" asp-controller="Home" asp-anti-forgery="true">
  16. <input type="number" name="id" hidden="hidden" value="@product.Id" />
  17. <input type="submit" value="Купить" class="btn btn-default" />
  18. </form>
  19. </td>
  20. </tr>
  21. }
  22. </table>

Решение задачи: «Передать одно значение из формы в метод»

textual
Листинг программы
  1. string decimalNum = "4";
  2. decimal.TryParse(decimalNum, out var newNum);
  3. Console.WriteLine(newNum);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы