我正在尝试创建一种注册系数的方法,该系数链接到一个表,该表又属于一个盟约,其想法是在第一个组合框中选择盟约,然后在第二个组合框中自动填充表,然后选择具有系数的表...,但返回错误:无法加载资源:net :: ERR_CONNECTION_RESET。
我已经做了很多研究,并更改了jquery脚本,到目前为止什么也没有。
控制器:
//para json
[HttpGet]
[EnableCors("MinhaPolitica")] // AQUI!!!
public JsonResult FiltraConvenios(int id)
{
ViewData["ConvenioId"] = new SelectList(_context.Set<Convenio>(), "Id", "Nome");
ViewBag.Convenios = _context.Convenio.ToList();
List<SelectListItem> Lista = new List<SelectListItem>();
var Dados = _context.Tabela
.Where(c => c.ConvenioID == id)
.OrderBy(c => c.Convenio)
.Select(t => new
{ t.Id, t.Nome });
foreach (var Linha in Dados)
{
Lista.Add(new SelectListItem()
{
Value = Linha.Id.ToString(),
Text = Linha.Nome,
Selected = false
});
}
return Json(Lista);
}
View
<div class="ibox-content">
<div class="col-md-12">
<form asp-action="Create">
<div class="row">
<div class="col-md-2">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Valor" class="control-label"></label>
<input asp-for="Valor" class="form-control" />
<span asp-validation-for="Valor" class="text-danger"></span>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label asp-for="DataAtivo" class="control-label"></label>
<input asp-for="DataAtivo" class="form-control" />
<span asp-validation-for="DataAtivo" class="text-danger"></span>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="ConvenioID" class="control-label"></label>
<select id="SelectConvenio" asp-for="ConvenioID" class="form-control" asp-items="ViewBag.ConvenioID"></select>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="TabelaID" class="control-label"></label>
<select id="SelectTabela" asp-for="TabelaID" class="form-control"></select>
</div>
</div>
<div class="col-md-1" style="margin-top:26px">
<div class="form-group">
<input type="submit" value="Salva" class="btn btn-primary" />
</div>
</div>
</div>
</form>
</div>
</div>
jQuery:
<script>
$(document).ready(function () {
$('#SelectConvenio').change(function() {
console.log('@Context.Request.Host');
console.log("clicou select convenio e mudou");
//limpa seletc ESCRAVO
$('#SelectTabela').empty();
console.log("passou por remoção da lista");
//Guarda opção que foi selecionada no Select MESTRE
var OpcaoAtual = $(this).val();
$('#SelectTabela').append($('<option></option>').val("0").html('Selecione uma Tabela'));
var x = document.getElementById("SelectTabela");
var option = document.createElement("option");
//Adiciona uma opção tipo Slecione um Valor
//option.value = "0"
x.add(option);
//Mancada para forçar redraw - pode não ser necessário
var element = document.getElementById('SelectTabela');
var n = document.createTextNode(' ');
var disp = element.style.display; // don't worry about previous display style
element.appendChild(n);
element.style.display = 'none';
setTimeout(function() {
element.style.display = disp;
n.parentNode.removeChild(n);
}, 20);
//fim do redraw - este bloco pode ser retirado
//para conferir a opção select MESTRE selecionada
console.log("Opcao Atual" + OpcaoAtual);
//monta URL completa, com parâmetro
var url = 'http://' + '@Context.Request.Host/Coeficientes/FiltraConvenios' + OpcaoAtual;
//verifica url montada
console.log(url);
console.log('idConvenio = ' + $('#SelectConvenio').val());
//chama AJAX
$.ajax({
type: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'text/plain'
},
dataType: 'json',
url: url,
success: function(data) {
console.log(data);
callbackFunction(data); //IMPORTANTE
}
});
//Carrega o select ESCRAVO
function callbackFunction(resultData) {
// alert("entrei");
var items = '<option value="0"><<Selecione uma Tabela>></option>';
//console.log(resultData);
$.each(resultData, function(i, tabela) {
items += "<option value='" + tabela.value + "'>" + tabela.text + "</option>";
$("#SelectTabela").append("<option value='" + tabela.value + "'>" + tabela.text + "</option>");
//confere no console
console.log("<option value='" + tabela.value + "'>" + tabela.text + "</option>");
});
//confere no console
console.log(items);
//truque para tirar linha em branco
$('#SelectTabela option:eq(' + 1 + ')').remove(); //retira branco
}
})
//função auxiliar REDRAW
//https://gist.github.com/mgHenry/6154611
jQuery.fn.redraw = function() {
jQuery(this).each(function() {
this.style.display = 'none';
this.offsetHeight; // no need to store this anywhere, the reference is enough
this.style.display = 'block';
})
};
});
</script>