【问题标题】:ASP.NET MVC error page content inside JQuery populated DIVJQuery 填充 DIV 中的 ASP.NET MVC 错误页面内容
【发布时间】:2010-02-27 06:42:15
【问题描述】:

我有一个分页控件,它通过一些 JQuery Ajax 刷新 DIV,但是如果发生错误并且当发生错误时说明页面是否由于无法连接到数据库或其他原因而崩溃。我的默认错误页面显示在该 DIV 中,而不是结果中..

所以我的问题是你如何做到这一点,这样就不会发生,当错误发生时,它会将用户重新路由到错误页面,而不是仅仅用错误页面的内容刷新 DIV?

更新:我只是做一个简单的

$("#PagerContainer").load($(this).attr("href"));

在链接单击事件处理程序上。

我需要做的是完全重定向到错误页面,而不是将内容放入 DIV

错误是从 Application_Error 的 Global.Aspx 中捕获的

另一个更新: 发生这种情况的地方实际上并不是一个 ajax 帖子,它是一个正常的表单提交,来自模态......在这种情况下我会怎么做。

【问题讨论】:

    标签: jquery asp.net-mvc


    【解决方案1】:

    而不是你发布的代码做类似的事情

    var theUrl = $(this).attr("href");
    
    $.ajax({
      type: "GET", 
      url: theUrl,
      success: function(data) { $("#PagerContainer").html(data); /*This will insert the HTML returned from the server */  },
      error: function(data) { alert('I encountered an error. I will NOT insert any HTML'); } 
    }); 
    

    正如您可能猜到的,如果从服务器收到肯定响应(HTTP 状态 200),将调用名为“成功”的函数。如果收到错误代码,将执行名为'error'的函数。

    【讨论】:

      【解决方案2】:

      查看JQuery.ajax() 的文档,它支持根据请求的状态代码执行不同的操作。

      但是,您可能还需要在控制器操作中检查 ajax 调用 - Request 对象上有一个名为 IsAjaxRequest() 的属性(嗯,实际上是一个返回布尔值的方法...)或其他东西,这可以帮助您根据请求是否使用 ajax 来返回不同的内容。

      【讨论】:

      • 我只是在做一个简单的 $("#PagerContainer").load($(this).attr("href"));
      • 是的。好吧,$.load() 是调用$.ajax() 的快捷方式,它只指定了对成功结果的处理。尝试将其关闭(如果您的错误页面的状态代码不是 200),或者使用控制器方法。 (这可能意味着您也需要在错误处理中检查 ajax 调用......)
      • 我不太确定你是否明白我的问题是什么......问题是我需要这样做,这样 DIV 的内容就不会被我的错误页面填充,但它基本上将浏览器重定向到错误页面。
      • 是的,我知道。我的意思是你应该使用$.ajax() 来获得所有的可配置性。您是否检查过(例如在 Firebug 中)出现错误时结果的状态码是什么?即,服务器是否将错误页面作为常规页面返回,或者带有修改的标题以通知存在问题?如果有不同的标头(“状态代码”!= 200),那么如果状态代码不正确,您可以通过让客户端脚本重定向来实现。 (这也要求您知道错误页面的 url...)一个选项是修改您的错误处理,使其支持 ajax。
      • 该错误是从 Application_Error 中捕获的,该错误不是 Ajax 错误而是 MVC ASP.NET 应用程序错误。
      猜你喜欢
      • 2011-08-20
      • 1970-01-01
      • 2019-07-17
      • 2013-05-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      相关资源
      最近更新 更多