模态删除错误
本文关键字:错误 删除 模态 | 更新日期: 2023-09-27 18:13:54
我有一个模态框,应该确认删除一些寄存器。当我单击"排除"按钮时,模态应该出现,但当我单击模态中的"确认"时,我得到以下错误:
'/'应用程序中的服务器错误。对于
NFE.Web.Controllers.NaturezaController
中的System.Web.Mvc.ActionResult Delete(Int32)
方法的非空类型System.Int32
的参数'id',参数字典包含一个空条目。可选参数必须是引用类型、nullable
类型,或者声明为可选参数。参数名称:parameters
下面是将模态添加到html文件的JQuery代码:
function ModalExclusao(ID) {
var htmlModal = '';
htmlModal += '<div class="modal fade modalExclusao" id="modalExclusao" tabindex="-1" role="dialog" aria-labelledby="modalExclusaoLabel">';
htmlModal += '<div class="modal-dialog" role="document">';
htmlModal += '<div class="modal-content">';
htmlModal += '<div class="modal-header">';
htmlModal += '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>';
htmlModal += '<h4 class="modal-title" id="modalExclusao">Confirmação de exclusão</h4>';
htmlModal += '</div>';
htmlModal += '<h5 style="text-align: center;">Tem certeza que deseja excluir permanentemente o registro?</h5>';
htmlModal += '<form method="POST" action="Delete/">';
htmlModal += '<div class="modal-footer">';
htmlModal += '<input type="text" id="'+ ID +'" name="'+ ID +'" hidden/>';
htmlModal += '<button type="button" class="btn btn-danger" data-dismiss="modal">Cancelar</button>';
htmlModal += '<button type="submit" class="btn btn-success">Confirmar</button>';
htmlModal += '</div>';
htmlModal += '</form>';
htmlModal += '</div>';
htmlModal += '</div>';
htmlModal += '</div>';
$('#modal').html(htmlModal);}
这是带有寄存器的表:
<table class="table table-condensed table-bordered table-hover" id="DataTables">
<thead>
<tr>
<th> Nome </th>
<th> CFOP Dentro do estado </th>
<th> CFOP Fora do estado </th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@item.Nome
</td>
<td>
@item.CFPODentroEstado
</td>
<td>
@item.CFPOForaEstado
</td>
<td>
<a href="/Natureza/Edit/@item.IDNatureza">Edit</a> |
<a href="javascript:func()" onclick="ModalExclusao(@item.IDNatureza)" data-toggle="modal" data-target=".modalExclusao">Excluir</a>
</td>
</tr>
}
<div id="modal"></div>
</tbody>
</table>
这里是Object控制器:
// POST: Natureza/Delete/5
[HttpPost]
public ActionResult Delete(int id)
{
try
{
if (VerificaSessao((List<Natureza>)Session["ListaDeNatureza"]))
{
List<Natureza> naturezas = new List<Natureza>();
naturezas = (List<Natureza>)Session["ListaDeNatureza"];
foreach (Natureza natureza in naturezas)
{
if (natureza.IDNatureza == id)
{
naturezas.Remove(natureza);
return RedirectToAction("Index", "Natureza");
}
}
}
// Se não tiver encontrado natureza retornar uma mensagem
return RedirectToAction("Index", "Natureza");
}
catch
{
return View();
}
}
我想这是你的
'<input type="text" id="'+ ID +'" name="'+ ID +'" hidden/>';
部分。这应该是
'<input type="hidden" name="id" value="' + ID + '"/>
.
你没有给这个输入一个值,这会使它的值为空。如果您想要添加id,您可以这样做,但这不是发送到服务器所必需的。您错过的最重要的事情是name
属性必须是要传递给的参数的名称:
向服务器发送数据的附录:当数据被发送到服务器(通常通过HTTP POST请求)时,所有数据都以名称-值对的形式发送,其中name是输入HTML控件的名称,value是用户输入/选择的值。对于非ajax请求,这总是正确的。
这应该可以修复输入的绑定问题。看看这个问题就知道了。
另外,您可能需要重新考虑Delete()
方法的URL路由。一旦您删除了URL中传递的id的其中一条记录,如果您试图再次提交相同的帖子,可能会得到404错误。