asp.net-mvc - Ajax启用MVCContrib网格寻呼机的奇怪问题

标签 asp.net-mvc asp.net-mvc-2 jquery mvccontrib mvccontrib-grid

让我们解释一下上下文:我在 jquery 对话框中有一个人员表单,其中有一些选项卡用于对与此人相关的信息进行分组(个人数据、地址、电子邮件、职位等)

其中一个选项卡通过对此 Controller 操作的 ajax 调用显示人员地址

[HttpGet]
public ActionResult GetAddresses( int id, int? page ) {
    IEnumerable<AddressModel> list = _manager.GetAddressesByContact( id ).AsPagination( page ?? 1, 2 );
    ViewData["__ContactID"] = id;
    return PartialView( "AddressList", list );
}

然后我有部分以下代码来创建网格和寻呼机

<%= Html.Grid(Model).Columns( column => {
    column.For(addr => addr.GetAddressTypeList().First(at => at.AddressTypeID == addr.AddressTypeID).Description).Named("Tipo");
    column.For( addr => ( addr.IsPostalAddress ) ? Html.Image( "/_assets/images/PostalAddress.gif", "Indirizzo per la corrispondenza" ) : "&nbsp;" ).Encode(false).Named("Posta");
    column.For(addr => addr.StreetAddress + "<br />" + addr.ZipCode + ", " + addr.City + "<br />" + 
        addr.GetProvinceList().First( p => p.ProvinceID == addr.ProvinceID).Description + ", " +
        addr.GetCountryList().First( c => c.CountryID == addr.CountryID).Name).Named("Indirizzo").Encode(false);
    column.For( addr => 
        "<a href='/Contact/EditAddress/" + addr.AddressID + "' class='ajaxLink' title='Modifica'><img src='/_assets/images/edit.png' alt='' /></a>"
        ).Attributes( style => "width:16px").Encode(false);
    column.For( addr =>
        "<a href='/Contact/DeleteAddress/" + addr.AddressID + "' class='ajaxLink' title='Elimina'><img src='/_assets/images/delete.png' alt='' /></a>"
        ).Attributes( style => "width:16px" ).Encode( false );
    } ).Attributes( @class => "table-list" )%>

<br />
<%= Html.Pager((IPagination)Model).First("Prima").Next("Successiva").Previous("Precedente").Last("Ultima").Format("Visualizzati {0}-{1} di {2}") %>

为了在寻呼机上启用 ajax,我使用了以下代码:

$(".paginationRight > a").live("click", function(event) {
    //stop the browser from going to the relevant URL
    event.preventDefault();
    $.ajax({
        type: "get",
        dataType: "html",
        url: this.href,
        data: {},
        success: function (response) {
            $("#addressListPlaceholder").html('').html(response);
        }
    });
});

除了一件事之外,一切都运转良好。当我单击分页链接时,会向服务器发出无限请求,如下面的 Fiddler 屏幕截图所示。会发生什么事情??? alt text

更新: 根据 Vinzenz 的建议,我在 ajax 调用后添加了 event.stopPropagation()return false 指令。然后我就有了

  • 首先单击寻呼机的 Next 链接(请求 48),Fiddler 显示 1 个请求。
  • 点击了上一个链接。 Fiddler 显示两个请求(49 和 50)
  • 再次单击“下一步”链接。 Fiddler 报告 4 个请求(51、52、53 和 54)

一般来说,如果我继续来回点击,向服务器发出的请求数量总是会增加......:(

alt text

最佳答案

出于测试原因,我会从此事件处理程序中返回 false;,或调用 event.stopPropagation();

可能是你的代码在其他地方发生了一些事情,你已经注册了同一个处理程序两次或更多次,并且它们以某种方式相互触发或其他什么。如果没有更多信息,很难判断。

但是尝试使用我的建议,您会看到它是否有帮助。

关于asp.net-mvc - Ajax启用MVCContrib网格寻呼机的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3928628/

相关文章:

javascript - 删除行刷新页面jquery

c# - IIS 7.5 : unable to login 中的 MVC5 与 Windows 身份验证

c# - 用于 CRUD 的 NHaml T4 模板?

c# - 属性要求用户登录而不是拒绝访问?

jquery - 如何在ui-sortable中手动触发 'update'

javascript - 正版 Jquery/javascript jpg 图像调整大小

asp.net-mvc - Ninject如何访问内核来创建实例?

asp.net-mvc - 我怎样才能得到 Html.ActionLink 结果文本的 href 部分

c# - MVC 4 表单例份验证 - 除了在 web.config 上声明的操作之外,无法访问任何其他操作

c# - Asp.Net MVC 2 - 将模型的属性绑定(bind)到不同的命名值