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

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

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

У меня есть представление:
<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)
        {
           // Какая-то логика
        }
Но он всегда принимает null. Прошу помощи, что не так?
Попробовал передать побольше параметров:
                <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.
Решил проблему, передавая 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);

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


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

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

15   голосов , оценка 4.067 из 5
Похожие ответы