首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带模态的错误删除

带模态的错误删除
EN

Stack Overflow用户
提问于 2016-10-19 18:27:31
回答 1查看 57关注 0票数 0

我有一个模态框,可以确认是否删除了一些寄存器。当我单击"Excluir“按钮时,模态会以应有的方式出现,但当我单击该模式中的"Confirma”时,会得到以下错误:

'/‘应用程序中的服务器错误。参数字典包含非空类型System.Int32的参数'id‘的空项,用于NFE.Web.Controllers.NaturezaController中的方法System.Web.Mvc.ActionResult Delete(Int32)。可选参数必须是引用类型、nullable类型,或者声明为可选参数。参数名称:参数

这里是JQuery代码,它将模式附加到html文件:

代码语言:javascript
复制
 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">&times;</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);}

,这是带有寄存器的表:

代码语言:javascript
复制
<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>

,这是对象控制器:

代码语言:javascript
复制
 // 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();
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-19 19:55:05

我想这是你的

'<input type="text" id="'+ ID +'" name="'+ ID +'" hidden/>';

在jquery代码中的一部分。这应该是

'<input type="hidden" name="id" value="' + ID + '"/>

您不会给这个输入一个值,这会使它的值为空。如果您想要添加一个id,您可以这样做,但是不需要向服务器投递。您所缺少的最重要的事情是,name属性必须是要传递给的参数的名称:

向服务器发送数据的增编:当数据被发送到服务器(通常通过HTTP请求)时,所有数据都以名称-值对的形式发送,其中name是输入HTML控件的名称,值是用户输入/选择的值。对于非Ajax请求来说,情况总是如此。

这应该可以用您的输入解决绑定问题。请查看this question以获得良好的参考资料。

此外,您可能需要重新考虑您的Delete()方法的URL路由。一旦删除了在URL中传递的id的记录之一,如果再次提交相同的帖子,可能会出现404错误。有关这方面的更多信息,请参见this帖子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40138977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档