Передать результат JS в контроллер
Всем привет. Пользователь вносит сумму, из предложенных на экране монет. 1.2.5.10. При нажатии на 1 внесённая сумма увеличивается1. При нажатии на 2 внесённая сумма увеличивается на 2 и тд Если сумма превышает стоимость пользователь получает сдачу. Пользователь вносит сумму, покупает выбранный напиток. Как Мне передать сумму которую пользователь внес. Что сделал Я: View
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
@foreach (var entity in Model)
{
var idButton+=1;
var buttonIncrease = increase + idButton;
<button id="buttonIncrease" name="increase" type="button" class="btn btn-primary">@entity.Cost</button>
}
@*test*@
<h2>внесенная сумма</h2>
<input type="text" name="field" value="0" />
@*test*@
Model:
[Column(TypeName = "decimal(18, 2)")]
private decimal _cost;
private int _quantity;
public int Id { get; set; }
[Column(TypeName = "decimal(18, 2)")]
public decimal Cost
{
get=>_cost;
set
{
if (value >= 0)
{
_cost = value;
}
else
{
throw new ArgumentException("Количество денег не может быть меньше 0");
}
}
}
public int Quantity { get; set; }
public bool IsBlocked { get; set; }
Controller
[HttpGet]
public IActionResult Purchase(int result, IFormCollection colletion)
{
string ss = ViewBag.SumMoney;
return Ok(result);
}
Array.prototype.forEach.call(document.querySelectorAll('.increase'), function(v) {
v.addEventListener('click', inc);
});
function inc() {
var div = this.parentElement;
var input = div.children.item(1);
input.setAttribute('value', (parseInt(input.getAttribute('value')) + 5).toString());
}
<div>
<button class="decrease" type="button">-</button>
<input type="text" name="field" value="0" />
<button class="increase" type="button">+</button>
</div>
тут уже не работает
<input type="text" name="field" value="0" />
тут уже не работает
Написал такой код, он вроде работает. Значение на вью меняются. Вот только за приделом див он не работает. А Мне нужно одно поле и 4 кнопки там будет меняться сумма. Как это код Js повесить на кнопки
Ответы (1 шт):
- Для передачи чего-либо из форм на странице, в представлении в первой строке кода, всегда указывается модель с которой будет работать это представление.
- В представлении нужно явно указать, что это форма для ввода данных, добавляяя строку
form method="post"
<div class="container">
<form method="post" asp-controller="Название контроллера" asp-action="PaymentPost">
<div>
// какой то код
<input asp-for="Payment" class="form-control" />
</div>
<input class="button" type="submit" value="Передать что-либо" />
</form>
</div>
В вашей модели, можно добавить такое свойство, в котором будет храниться сумма, которую ползователь заплатил.
public int Payment { get; set; }В контроллере, кроме метода типа Get, нужно создать такой метод типа Post, назвать который можно PaymentPost. Что то типа
public IActionResult PaymentPost(int Payment) {/* логика обработки, полученного результата Payment */ return RedirectToAction("Index");}
В итоге, вам нужно разобраться с ASP.NET Core, прежде чем его пытаться использовать. Вот здесь видео, в котором коротко говорится о том как работает ASP.NET Core, а вот здесь репозиторий с кодом для ASP.NET Core MVC на .NET 5,