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í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 脚本在执行和保释时遇到错误,则会出现此行为,让浏览器自行处理提交。根据我的经验,这最常发生在名称不匹配时。也许您的分部视图没有返回 ID 为"table_paises"的对象,因此脚本无法找到目标对象?
无论哪种方式,在浏览器中调试代码 (F12) 都应显示错误。
就我而言,我忘记加载jquery.unobtrusive-ajax.min.js
文件。
我通过添加以下代码行解决了它
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js")