Передать одно значение из формы в метод - 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);