Ajax.BeginForm 不发送和 AjaxRequest

本文关键字:AjaxRequest BeginForm Ajax | 更新日期: 2023-09-27 18:37:26

我想使用 Ajax.BeginForm 在不重新加载整个页面的情况下更新表,当我提交表单时,请求不是 ajax 请求,或者在控制器方法中,当我询问请求是否是 ajax 时,它永远不会进入 if 句子。所以我的文件中有这个:

在部分视图上

@model IEnumerable<Fighting.DTO.N_pais.OutN_pais>
<table class="table table-advance" id="table_paises">
    <thead>
        <tr>
            <th style="width: 18px">
                <input type="checkbox" /></th>
            <th>Nombre</th>
            <th>Editar</th>
            <th>Eliminar</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr class="table-flag-blue">
                <td>
                    <input type="checkbox" value="@item.ID_PAIS" /></td>
                <td>@item.NOMBRE</td>
                <td><a class="btn btn-circle" data-toggle="modal" href="#modal-2" onclick="Edit(@item.ID_PAIS)"><i class="fa fa-edit"></i></a></td>
                <td><a class="btn btn-circle" data-toggle="modal" href="#modal-3" onclick="Delete(@item.ID_PAIS, @item.NOMBRE)"><i class="fa fa-trash-o"></i></a></td>
            </tr>
        }
    </tbody>
</table>

在视图中

<div class="row">
    <div class="col-md-12">
        <div class="box">
            <div class="box-content">
                <div class="btn-toolbar pull-right clearfix">
                    <div class="btn-group">
                        <a class="btn btn-circle show-tooltip" title="Adicionar Pa&iacute;s" href="#modal-1" data-toggle="modal"><i class="fa fa-plus"></i></a>
                        <a class="btn btn-circle show-tooltip" title="Edit selected" href="#modal-2" data-toggle="modal"><i class="fa fa-edit"></i></a>
                        <a class="btn btn-circle show-tooltip" title="Delete selected" href="#modal-3" data-toggle="modal"><i class="fa fa-trash-o"></i></a>
                    </div>
                    <div id="form-reload" class="btn-group">
                        @using (Ajax.BeginForm("Obtener", "NPais", new AjaxOptions
                        {
                            HttpMethod = "get",
                            InsertionMode = InsertionMode.Replace,
                            UpdateTargetId = "table_paises"
                        }))
                        {
                            <button class="btn btn-circle show-tooltip" title="Recargar" type="submit"><i class="fa fa-repeat"></i></button>                            
                        }
                    </div>
                </div>
                <br />
                <br />
                <div class="clearfix"></div>
                <div class="table-responsive" style="border: 0">
                    @Html.Partial("_TablePais", Model)
                </div>
            </div>
        </div>
    </div>
</div>

在控制器上

public object Obtener()
    {
        var pais = _n_pais.GetAll().ProjectedAsCollection<OutN_pais>().ToList();
        var paises = from r in pais select r;
        return paises;
    }
    public override ActionResult Obtener(InUi input)
    {
        if (Request.IsAjaxRequest())
        {
            return PartialView("_TablePais", Obtener());
        }
        return View(Obtener());
    }

JavaScript

@Scripts.Render("~/Content/Flaty/assets/jquery/jquery-2.0.3.min.js")
@Scripts.Render("~/Content/Flaty/assets/bootstrap/js/bootstrap.min.js")
@Scripts.Render("~/Content/Flaty/assets/jquery-slimscroll/jquery.slimscroll.min.js")
@Scripts.Render("~/Content/Flaty/assets/jquery-cookie/jquery.cookie.js")
@Scripts.Render("~/Content/Flaty/assets/jquery-unobtrusive-ajax/jquery.unobtrusive-ajax.js")

我错过了什么?

Ajax.BeginForm 不发送和 AjaxRequest

如果不显眼的 ajax 脚本在执行和保释时遇到错误,则会出现此行为,让浏览器自行处理提交。根据我的经验,这最常发生在名称不匹配时。也许您的分部视图没有返回 ID 为"table_paises"的对象,因此脚本无法找到目标对象?

无论哪种方式,在浏览器中调试代码 (F12) 都应显示错误。

就我而言,我忘记加载jquery.unobtrusive-ajax.min.js文件。

我通过添加以下代码行解决了它

@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")