1
In my project I created a button for registration, which calls a modal that is inside a PartialView
. The objective is to register through this modal the data informed in the database, the problem and that when I click on submit
modal nothing happens, I’ve researched enough and I haven’t found any explanation of how to do it this way using PartialView
.
Controller:
public IActionResult Index()
{
var fornecedores = _context.Fornecedores.ToList();
return View(fornecedores);
}
public IActionResult NovoFornecedor()
{
return View();
}
[HttpPost]
public async Task<IActionResult> NovoFornecedor (Fornecedores fornecedores)
{
if(ModelState.IsValid)
{
_context.Add(fornecedores);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(fornecedores);
}
Index:
@model IEnumerable<HelpDesk.Models.Fornecedores>
@{
ViewData["Title"] = "Cadastro de Fornecedores";
}
<div class="container">
<h4>Fornecedores Cadastrados</h4>
<p>
<button class="btn btn-success" data-toggle="modal" data-target="#NovoFornecedor">Novo Fornecedor</button>
</p>
<div class="table table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th scope="col">Empresa</th>
<th scope="col">CNPJ</th>
<th scope="col">Responsavel</th>
<th scope="col">Celular</th>
<th scope="col">Fixo</th>
<th scope="col">Email</th>
<th scope="col">Ações</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Empresa)</td>
<td>@Html.DisplayFor(modelItem => item.CNPJ)</td>
<td>@Html.DisplayFor(modelItem => item.Responsavel)</td>
<td>@Html.DisplayFor(modelItem => item.Celular)</td>
<td>@Html.DisplayFor(modelItem => item.Fixo)</td>
<td>@Html.DisplayFor(modelItem => item.Email)</td>
<td>
<a asp-action="EditarFornecedor" asp-route-id="@item.FornecedorId" class="btn btn-outline-info btn-sm">Atualizar</a> |
<a onclick="ModalExcluir (@item.FornecedorId)" class="btn btn-outline-danger btn-sm">Excluir</a>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
@Html.Partial("_NovoFornecedor", new Fornecedores());
Partialview containing the registration modal:
@model HelpDesk.Models.Fornecedores
<div class="modal fade" id="NovoFornecedor">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Cadastrar Novo Fornecedor</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form asp-controller="Fornecedores">
<div class="form-group">
<label>Empresa:</label>
<input type="text" class="form-control" asp-for="Empresa">
<span asp-validation-for="Empresa" class="text-danger"></span>
</div>
<div class="form-group">
<label>CNPJ:</label>
<input type="text" class="form-control" asp-for="CNPJ">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Fechar</button>
<input type="submit" value="Salvar" class="btn btn-outline-success">
</div>
</div>
</div>
Place the Ubmit button inside the
form
– Barbetta
It worked, I only had to modify the form pointing to Action, thanks for the help.
– João
I’ll answer your question not to stay open
– Barbetta
ok, just change the modal form to <form Asp-action="Newtemplate"> why if not from the error.
– João