这是我的问题,我有一个简单的表格,该表格按步骤划分。
这里是问题。
首次发布时,发布了CodigoOperador属性。 当我第二次发布时,Celula具有价值,但CodigoOperador价值却丢失了 当我第三次发布时,Referencia值未发布,并且所有内容均为空
正如您在表单方法中看到的那样,我正在为此使用ajax不引人注目。
我尝试为每个输入使用多种形式,但后来我无法发布整个模型,这真是一个大混乱。
所以我的问题是,解决这个问题的最佳方法是什么?
预期结果基本上是一次输入每个输入,最后确认具有所有值的整个模型。
这是代码
视图模型
public class OperadorLoginViewModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Operador" ,Prompt = "Operador")]
public int? CodigoOperador { get; set; }
[Required]
[Display(Name = "Célula", Prompt = "Célula")]
public int? Celula { get; set; }
[Required]
[Display(Name = "Referência", Prompt = "Referência")]
public int? Referencia { get; set; }
}
html
<form method="post"
data-ajax="true"
data-ajax-method="post"
data-ajax-begin="onBegin" data-ajax-complete="onComplete"
data-ajax-failure="onFailed" data-ajax-success="onSuccess">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<input asp-for="Operador.CodigoOperador" class="form-control custom-input" />
<span asp-validation-for="Operador.CodigoOperador" class="text-danger"></span>
</div>
<div class="form-group d-none">
<select asp-for="Operador.Celula" class="form-control custom-input">
<option value="">Selecione uma Célula</option>
</select>
<span asp-validation-for="Operador.Celula" class="text-danger"></span>
</div>
<div class="form-group d-none">
<select asp-for="Operador.Referencia" class="form-control custom-input">
<option value="">Selecione uma Referência</option>
</select>
<span asp-validation-for="Operador.Referencia" class="text-danger"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<button type="submit" class="btn btn-dark rounded login-button d-none" style="width:100%">
<i class="fa fa-check"></i>
Entrar
</button>
</div>
<div class="col-6">
<button type="button" class="btn btn-dark rounded cancel-button d-none" style="width:100%">
<i class="fa fa-eraser"></i>
Reset
</button>
</div>
</div>
</form>
此表单已多次发布到此函数
public async Task<IActionResult> OnPostAsync()
{
if (Operador.Celula == null)
{
IDbConnection con = new SqlConnection(_config.GetConnectionString("ListaGeralConnection"));
var query = @"SELECT
Sector AS UAP,
CASE
WHEN Turno = 1 THEN 'Manhã'
WHEN Turno = 2 THEN 'Tarde'
WHEN Turno = 3 THEN 'Noite'
END Turno
FROM
empregados
WHERE Numero = @CodigoOperador
AND Estado = 'Ativo'";
var operador = await con.QueryFirstOrDefaultAsync<OperadorViewModel>(query, new { CodigoOperador = Operador.CodigoOperador });
//var uap = "UAP2";
if (operador.UAP != null)
{
var celulas = await _context.Celulas.Where(c => c.UAP == operador.UAP).ToListAsync();
if (celulas != null)
{
return new JsonResult(new { celulas = celulas });
}
return new JsonResult("Não existem células atríbuidas a este UAP.");
}
return new JsonResult("Este operador não existe.");
}
else if (Operador.Referencia == null)
{
var referencias = await _context.Referencias
.Where(r => r.Matrizes.Any(c => c.CelulaId == Operador.Celula))
.Select(x => new Referencia
{
Id = x.Id,
Nome = x.Nome
})
.ToListAsync();
if (referencias != null)
{
return new JsonResult(new { referencias = referencias });
}
return new JsonResult("Não existem referências nesta célula.");
}
else
{
var data = DateTime.Now.ToString("dd-MM-yyyy");
return new JsonResult(1);
}
}
这是表单的javascript逻辑
var onSuccess = function (response) {
if (response.celulas) {
GetCelulas(response.celulas);
}
if (response.referencias) {
GetReferencias(response.referencias);
}
};
function GetCelulas(celulas) {
var $select = $('#Operador_Celula');
$.each(celulas, function (i, celula) {
var option = $('<option>', {
value: celula.id
}).html(celula.nome).appendTo($select);
});
$('#Operador_CodigoOperador').prop('disabled', true);
$('#Operador_Celula').parent().removeClass('d-none');
}
function GetReferencias(referencias) {
if (referencias.length > 1) {
var $select = $('#Operador_Referencia');
$.each(referencias, function (i, referencia) {
//console.log(celula);
var option = $('<option>', {
value: referencia.id
}).html(referencia.nome).appendTo($select);
//console.log(option);
});
$('#Operador_Celula').prop('disabled', true);
$('#Operador_Referencia').parent().removeClass('d-none');
}
else {
swal('Atenção!','Esta Célula não tem Referências','warning');
}
}