值重置为零

values are reset to zero

我正在通过 post 进行插入,但是我的 class 得到的是零值。

输入的值通过变量传递并正确显示,但在通过 post 执行操作时会出现零值。

最有趣的是,如果您在输入中键入内容,那么值就会正确。

<form method="post">
        <div class="col-sm-3">
            <label>SALDO</label>
            <div style="border:1px solid #bbb9b9; border-radius:3px;"></div>
            <br />
            <div class="form-group">
                <label asp-for="Caixas.ValorFinalDinheiro" class="control-label"></label>
                <input asp-for="Caixas.ValorFinalDinheiro" name="Caixas.ValorFinalDinheiro"  id="Caixas.ValorFinalDinheiro" class="form-control finalFundo"  disabled="disabled" />

            </div>
            <div class="form-group">
                <label asp-for="Caixas.ValorFinalCheque" class="control-label"></label>
                <input asp-for="Caixas.ValorFinalCheque" class="form-control finalFundo"  disabled="disabled"/>

            </div>
            <div class="form-group">
                <label asp-for="Caixas.ValorFinalBoleto" class="control-label"></label>
                <input asp-for="Caixas.ValorFinalBoleto" class="form-control finalFundo"  disabled="disabled" />

            </div>
            <div class="form-group">
                <label asp-for="Caixas.ValorFinalCartao" class="control-label"></label>
                <input asp-for="Caixas.ValorFinalCartao" class="form-control finalFundo"  disabled="disabled" />

            </div>
            <div class="form-group">
                <label asp-for="Caixas.ValorFinalDeposito" class="control-label"></label>
                <input asp-for="Caixas.ValorFinalDeposito" class="form-control finalFundo" disabled="disabled"  />

            </div>
            <div class="form-group">
                <label asp-for="Caixas.ValorFinal" class="control-label"></label>
                <input asp-for="Caixas.ValorFinal" class="form-control" style="background-color:#9FF781"   />

            </div>
        </div>
        <div class="col-sm-12">
            <div class="form-group">
                <input type="submit" value="Confirmar o Fechamento do Caixa" class="btn btn-primary btn-sm"  />
                <a asp-page="Index" class="btn btn-success btn-sm">Retorna ao Caixa</a>
            </div>
        </div>
    </form>

和控制器

[BindProperty]
public Caixas Caixas { get; set; }

public async Task<IActionResult> OnPostAsync()
{
    var C = _context.Caixas.Find(Caixas.Id);
    C.fechado = true;
    C.DataFinal = DateTime.Now;
    C.HoraFinal = DateTime.Now;
    C.FuncionarioFechamentoId = _userManager.GetUserId(HttpContext.User);
    C.ValorFinalDinheiro = Caixas.ValorFinalDinheiro;
    C.ValorFinalCheque = Caixas.ValorFinalCheque;
    C.ValorFinalBoleto = Caixas.ValorFinalBoleto;
    C.ValorFinalCartao = Caixas.ValorFinalCartao;
    C.ValorFinalDeposito = Caixas.ValorFinalDeposito;
    C.ValorFinal = Caixas.ValorFinal;

    C.ValorSaida = Caixas.ValorSaida;

    await _context.SaveChangesAsync();
    return RedirectToPage("./Index");
}

尝试在您的方法之前使用数据注释 "HttpPost"。像这样:

[HttpPost]
public async Task<IActionResult> OnPostAsync()
{
  ...
}

事实上,所有浏览器都不应该提交禁用的输入。

关注this

In this example, the INPUT element is disabled. Therefore, it cannot receive user input nor will its value be submitted with the form.

<INPUT disabled name="fred" value="stone">

我不知道你为什么会有这样的表格。但要克服这种情况,您可以添加一个 <input type="hidden"> 元素,其名称和值与禁用的输入相同。并在 POST 请求中发送值。