Я довольно новичок в программировании, и я застрял с этой проблемой ниже.
Я пытаюсь передать 2 значения моему контроллеру: «Id» и «количество».
«id» поражает контроллер, как и предполагалось. но я не могу сказать то же самое для «количества».
По существу, количество является / должно быть текстовым полем, в котором пользователь добавляет количество. Результат для количества достигает контроллера как NULL или 0 (ноль).
Это будет использоваться для корзины покупок, которую я пытаюсь настроить. Где я могу получить идентификатор для продукта и количество.
Я пробовал использовать бритву, но данные, введенные пользователем для количества, не передаются контроллеру. Я уверен, что передал 2 параметра, как это раньше, и я видел такой же пример. Но я разочарован тем, что не могу сейчас сделать такую простую вещь. (
public class OrderViewModel{
public IEnumerable<Product> Product { get; set; }
public IEnumerable<Supplier> Supplier { get; set; }
public Product product { get; set; }
public Supplier supplier { get; set; }
public int Quantity { get; set; }}}```
Controller
public ActionResult AddToCart(int id, int? qty)
{
}
My view
@using (Html.BeginForm("AddToCart", "Order", FormMethod.Get))
{
<table class="table table-hover table-striped table-bordered">
<tr>
<th> @Html.DisplayNameFor(model => model.product.ProductCode) </th>
<th> @Html.DisplayNameFor(model => model.product.Description) </th>
<th> @Html.DisplayNameFor(model => model.product.Image) </th>
<th> @Html.DisplayNameFor(model => model.product.Price) </th>
<th> Quantity for purchase </th>
<th> @Html.DisplayNameFor(model => model.supplier.CompanyName)</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td> @Html.DisplayFor(modelItem => item.product.ProductCode) </td>
<td> @Html.DisplayFor(modelItem => item.product.Description) </td>
<td> @Html.DisplayFor(modelItem => item.product.Image) </td>
<td> @Html.DisplayFor(modelItem => item.product.Price) </td>
<td> <input type="number" value="@item.Quantity" /> </td>
<td> @Html.DisplayFor(modelItem => item.supplier.CompanyName) </td>
<td>
@Html.ActionLink("Add", "AddToCart", new { id = item.product.ProductId, qty = item.Quantity }, new { @class = "btn btn-success"})
</td>
</tr>
}
</table>
}
My expectation is that the "quantity" entered by the user, will hit the action on the controller.
**I fixed that by adding that following**
<input type="hidden" name="id" value="@item.product.ProductId" />
<input type="submit" value="Add">
removed the following
@Html.ActionLink("Add", "AddToCart", new { id = item.product.ProductId, qty = item.Quantity }, new { @class = "btn btn-success"})