Проект представляет собой калькулятор только с кнопками и одним полем метки для выражения и вывода.
После нажатия любой кнопки появляется POST для одной из двух функций.Вот контроллер
public class CalculatorController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult AddToExpresion(string _char, CalculatorViewModel CVM)
{
CVM.Expression += _char;
return View("Index", CVM);
}
}
А вот вид
@model WebApplication1.Models.CalculatorViewModel
@{
ViewData["Title"] = "Calculator";
}
<h2>Calculator</h2>
<form asp-controller="Calculator" asp-action="Calculate" method="post">
<div class="container-fluid">
<div class="row">
<div class="col-md-3">
<label asp-for="Expression">@Html.DisplayFor(x => x.Expression)</label>
<input asp-for="Expression" type="hidden" />
</div>
</div>
<div class="row">
<button type="submit" class="btn" asp-action="AddToExpresion" asp-route-_char="(">
(
</button>
<button type="submit" class="btn" asp-action="AddToExpresion" asp-route-_char=")" >
)
</button>
<button type="submit" class="btn" asp-action="AddToExpresion" asp-route-_char="%">
%
</button>
<button type="button" class="btn" value="AC">
AC
</button>
</div>
..
</div>
</form>
Проблема в том, что когда вызывается AddToExpression, сначала выражение равно нулю (правильно), а затем после второй попытки оно все еще равно нулю (должно быть предыдущим символом). Почемутак?