Ajax.BeginForm不发送和AjaxRequest

时间:2015-01-14 15:04:08

标签: c# jquery asp.net ajax razor

我想使用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());
    }

javascripts

@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")

我错过了什么?

2 个答案:

答案 0 :(得分:1)

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

无论哪种方式,在浏览器中调试代码(F12)都应该表明您的错误。

答案 1 :(得分:0)

在我的情况下,我忘记加载jquery.unobtrusive-ajax.min.js文件。

我通过添加以下代码行解决了这个问题

@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")
相关问题