我在模式boostrap中使用Ajax.BeginForm,Ajax.Begin这个Form,我的帖子第一次加载页面时工作...一切正常,但当页面经过帖子时这个帖子是一个过滤器或者分页,再次点击以发布Ajax.BeginForm这个帖子没有完成,单击提交按钮没有任何反应,也没有发布。
在Index.cshtml上
@model Preparacao.Gerenciar.Web.Areas.Parceiro.Models.AssinaturasModel
@{ViewBag.Title = "Gerenciar Assinaturas"; Layout = "~/Areas/Parceiro/Views/Shared/_Layout.cshtml";}
<section>
<ul class="breadcrumb">
<li class="active">Gerenciar Assinaturas</li>
</ul>
<div class="page-header">
<h1>Gerenciar Assinaturas</h1>
</div>
<div class="gerenciar-assinaturas">
@Html.ActionLink("Relatórios", "Relatorio", "Assinaturas", new { }, new { @class = "btn btn-danger pull-right" })
@using (Ajax.BeginForm("Index", "Assinaturas", FormMethod.Post, new AjaxOptions { UpdateTargetId = "resultado", OnComplete = "CompletoSemMensagem", OnFailure = "Falha", OnBegin = "Carregando" }, new { @class = "form-inline" }))
{
List<SelectListItem> pedido = new List<SelectListItem>();
pedido.Add(new SelectListItem() { Text = "Status Pedido" });
pedido.Add(new SelectListItem() { Value = "0", Text = "Aguardando" });
pedido.Add(new SelectListItem() { Value = "2", Text = "Cancelado" });
pedido.Add(new SelectListItem() { Value = "1", Text = "Confirmado" });
pedido.Add(new SelectListItem() { Value = "3", Text = "Expirado" });
pedido.Add(new SelectListItem() { Value = "4", Text = "Devolvido" });
<div class="control-group controls-row">
@Html.TextBoxFor(m => m.Nome, new { id = "nome", placeholder = "Nome", @class = "span4" })
@Html.TextBoxFor(m => m.Email, new { id = "email", placeholder = "Email", @class = "span3" })
</div>
<div class="control-group">
<div class="input-append">
@Html.TextBoxFor(m => m.DataInicio, new { id = "DataInicio", placeholder = "Data Inicio", @class = "span2 datepicker date" })
<span class="add-on"><i class="icon-calendar"></i></span>
</div>
<div class="input-append">
@Html.TextBoxFor(m => m.DataFim, new { id = "DataFim", placeholder = "Data Fim", @class = "span2 datepicker date" })
<span class="add-on"><i class="icon-calendar"></i></span>
</div>
@Html.DropDownListFor(m => m.Status, pedido, new { id = "statuspedido", @class = "span2"})
<input type="submit" class="btn btn-primary control-group" value="Filtrar" />
</div>
<div class="clearfix"></div>
}
</div>
<hr />
<div id="resultado">
@{ Html.RenderAction("Consultar","Assinaturas"); }
</div>
</section>
在_resultado.cshtml上
@model Preparacao.Gerenciar.Web.Areas.Parceiro.Models.AssinaturasModel
@{Layout = null;}
<table id="gerenciar-assinaturas-table" class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Nome</th>
<th>Email</th>
<th>Data</th>
<th>Data Fim</th>
<th>Status</th>
</tr>
</thead>
<tbody>
@foreach (var item in (IEnumerable<Preparacao.Dominio.Pedido>)ViewBag.Pedidos)
{
<tr>
<td class="nome">
@item.Cliente.Nome
</td>
<td class="email">
@item.Cliente.Email
</td>
<td class="data">
@item.Data.ToShortDateString()
</td>
<td class="data">
@if (@item.DataFim == null)
{
<span>Indeterminado</span>
}
else
{
@Convert.ToDateTime(@item.DataFim).ToString("dd/MM/yyyy")
}
</td>
<td id = "@("status-liberar-bloquear" + item.PedidoId)">
@if (@item.Status == 0)
{ <span> Aguardando </span> }
@if (@item.Status == 1)
{ <span> Confirmado </span> }
@if (@item.Status == 2)
{ <span> Cancelado </span> }
@if (@item.Status == 3)
{ <span> Expirado </span> }
@if (@item.Status == 4)
{ <span> Confirmado </span> }
</td>
<td>
@if (item.enmStatus == Preparacao.Dominio.enumStatusPedido.PagamentoConfirmado)
{
<a class="btn btn-danger botao-largura-padrao" href="#liberar-bloquear-@item.PedidoId" data-toggle="modal" id="@("btn-liberar-bloquear" + item.PedidoId)" > Bloquear</a>
}
else if (item.enmStatus == Preparacao.Dominio.enumStatusPedido.AguardandoPagamento)
{
<a class="btn btn-success botao-largura-padrao" href="#liberar-bloquear-@item.PedidoId" data-toggle="modal" id="@("btn-liberar-bloquear" + item.PedidoId)" >Liberar</a>
}
</td>
</tr>
<div class="modal hide" id="@("liberar-bloquear-" + item.PedidoId)">
@Html.Partial("LiberarBloquear", new Preparacao.Gerenciar.Web.Areas.Parceiro.Models.AssinaturasBloqLiberaModel(@item.PedidoId, @item.enmStatus))
</div>
}
</tbody>
</table>
<div class="pagination pagination-right">
<ul>
@if (ViewBag.Total == 0)
{
<li class="disabled"><a href="#">Anterior</a></li>
<li class="disabled"><a href="#">Próximo</a></li>
}
else
{
if (ViewBag.Pagina == 1)
{
<li class="disabled"><a href="#">Anterior</a></li>
}
else
{
<li class="maozinha"> <a onclick="paginar('pagina'+@(ViewBag.Pagina - 1))">Anterior</a>
@using (Ajax.BeginForm("Index", "Assinaturas", FormMethod.Post, new AjaxOptions { UpdateTargetId = "resultado", OnComplete = "CompletoSemMensagem", OnFailure = "Falha", OnBegin = "Carregando" }, new { @id = "pagina" + (ViewBag.Pagina - 1), @class = "invisible" }))
{
<input type="hidden" name="Pagina" value="@(ViewBag.Pagina - 1)"/>
@Html.HiddenFor(m => m.Nome)
@Html.HiddenFor(m => m.Status)
@Html.HiddenFor(m => m.Email)
@Html.HiddenFor(m => m.DataInicio)
@Html.HiddenFor(m => m.DataFim)
}
</li>
}
for (int i = ViewBag.Comeco; i <= ViewBag.Fim; i++)
{
<li class="@(i == ViewBag.Pagina ? "active" : "maozinha")"> <a onclick="paginar('pagina'+@i)">@i</a>
@using (Ajax.BeginForm("Index", "Assinaturas", FormMethod.Post, new AjaxOptions { UpdateTargetId = "resultado", OnComplete = "CompletoSemMensagem", OnFailure = "Falha", OnBegin = "Carregando" }, new { @id = "pagina" + i, @class = "invisible" }))
{
<input type="hidden" name="Pagina" value="@i"/>
@Html.HiddenFor(m => m.Nome)
@Html.HiddenFor(m => m.Status)
@Html.HiddenFor(m => m.Email)
@Html.HiddenFor(m => m.DataInicio)
@Html.HiddenFor(m => m.DataFim)
}
</li>
}
if (ViewBag.Pagina == ViewBag.NumeroDePaginas)
{
<li class="disabled"><a href="#">Próximo</a></li>
}
else
{
<li class="maozinha"> <a onclick="paginar('pagina'+@(ViewBag.Pagina + 1))">Próximo</a>
@using (Ajax.BeginForm("Index", "Assinaturas", FormMethod.Post, new AjaxOptions { UpdateTargetId = "resultado", OnComplete = "CompletoSemMensagem", OnFailure = "Falha", OnBegin = "Carregando" }, new { @id = "pagina" + (ViewBag.Pagina + 1), @class = "invisible" }))
{
<input type="hidden" name="Pagina" value="@(ViewBag.Pagina + 1)"/>
@Html.HiddenFor(m => m.Nome)
@Html.HiddenFor(m => m.Status)
@Html.HiddenFor(m => m.Email)
@Html.HiddenFor(m => m.DataInicio)
@Html.HiddenFor(m => m.DataFim)
}
</li>
}
}
</ul>
</div>
<script type="text/javascript">
function paginar(pagina) {
$("#" + pagina).submit();
}
</script>
On View LiberarOuBloquear.cshtml
@model Preparacao.Gerenciar.Web.Areas.Parceiro.Models.AssinaturasBloqLiberaModel
@using (Ajax.BeginForm("LiberarOuBloquear", "Assinaturas", new AjaxOptions { HttpMethod = "Post", OnSuccess = "SucessoLiberarEBloquear", OnComplete = "Completo", OnFailure = "Falha", OnBegin = "Carregando" }, new { id = "form-liberar"+Model.PedidoId }))
{
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Motivos</h3>
</div>
<div class="modal-body">
@Html.TextAreaFor(x => x.Descricao, new { @rows = "6", @class = "tam-descricao" })
@Html.HiddenFor(x => x.PedidoId)
</div>
<div class="modal-footer">
<input id="@("btn-salvar-"+@Model.PedidoId)" class="btn btn-success pull-left" type="submit" value="Salvar" />
<button class="btn" data-dismiss="modal" aria-hidden="true" id="@("fecharmodal-"+@Model.PedidoId)">Fechar</button>
</div>
}
<script type="text/javascript">
function SucessoLiberarEBloquear(data) {
if (data.ativa) {
$("#btn-liberar-bloquear" + data.PedidoId).removeClass("btn-success");
$("#btn-liberar-bloquear" + data.PedidoId).addClass("btn-danger");
$("#btn-liberar-bloquear" + data.PedidoId).html("Bloquear");
$("#status-liberar-bloquear" + data.PedidoId).html(data.Status);
} else {
$('#btn-liberar-bloquear' + data.PedidoId).hide();
$("#status-liberar-bloquear" + data.PedidoId).html(data.Status);
}
Sucesso(data);
}
</script>