Передать одно значение из формы в метод - C#
Формулировка задачи:
У меня есть представление:
И метод, принимающий значение из формы:
Но он всегда принимает null.
Прошу помощи, что не так?
Все значения передаются, кроме product.Cost... Что не так, product.Cost это decimal.
Листинг программы
- <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>
Листинг программы
- [HttpPost]
- public async Task<IActionResult> Buy(decimal? buy)
- {
- // Какая-то логика
- }
Попробовал передать побольше параметров:
Листинг программы
- <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>
Решил проблему, передавая Id продукта.
Листинг программы
- <input type="number" name="id" hidden="hidden" value="@product.Id" />
- <input type="submit" value="Купить" class="btn btn-default" />
Не по теме:
Не совсем решение проблемы, но передавать Id, думаю, будет правильнее. Суть проблемы в decimal.
Ну и выложу, окончательное решение. А вдруг...
Листинг программы
- <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>
Решение задачи: «Передать одно значение из формы в метод»
textual
Листинг программы
- string decimalNum = "4";
- decimal.TryParse(decimalNum, out var newNum);
- Console.WriteLine(newNum);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д