Ajax.BeginForm不会在分页或过滤后发布

时间:2013-03-04 13:49:28

标签: asp.net ajax asp.net-mvc post asp.net-ajax

我在模式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>

0 个答案:

没有答案