2016-02-05 56 views
0

我想知道当在弹出时加载局部视图时发生错误时是否可以重定向到错误页面。我在API中显示了部分数据。当在模态中加载局部视图时发生错误时重定向到错误页面

我的js代码

@section Scripts { 
    <script> 
     $(document).ready(function() { 

      $.ajaxSetup({ cache: false }); 

      $("a[data-modal]").on("click", function (e) { 
       $('#myModalContent').load(this.href, function() { 
        $('#myModal').modal({ 
         keyboard: true 
        }, 'show'); 
       }); 
       return false; 
      }); 
     }); 

    </script> 
} 

现在它会显示弹出里面的错误页面。它应该被重定向到另一个页面。

EDIT

错误捕获的执行

Webconfig

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <remove statusCode="403" subStatusCode="-1" /> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="403" path="/Error/Index/403" responseMode="ExecuteURL"/> 
    <error statusCode="404" path="/Error/Index/404" responseMode="ExecuteURL"/> 
    <error statusCode="500" path="/Error/Index/500" responseMode="ExecuteURL"/> 
</httpErrors> 

误差控制器

public ActionResult Index(int id = 500) 
     { 
      var model = new ErrorPageViewModel(); 
      model.ErrorCode = id; 
      switch (id) 
      { 
       case 403: 
       case 404: 
        model.ErrorHeader = "Page not Found!"; 
        break; 
       default: 
        model.ErrorHeader = "Oops, something went wrong!"; 
        break; 

      } 

      return View(model); 
     } 

回答

0

.load()回调函数可以采取额外的参数瓦特这将让你知道请求是否成功,并采取相应的行动:

$('#myModalContent').load(this.href, function (response, status, xhr) { 
    if (status == 'error') { 
     // oops some error occurred => redirect the user to your error page 
     window.location.href = '/error500'; 
    } else { 
     $('#myModal').modal({ 
      keyboard: true 
     }, 'show'); 
    } 
}); 
+0

我试过你的解决方案,但它不工作。错误页面仍显示在模式弹出。我编辑了我的问题。谢谢 –

+0

根据我已经显示的代码示例,模态将显示或重定向到错误页面。但不是两个。所以我想这个问题是在你的代码的其他部分。 –

+0

我在我的webconfig中删除了httpErrors标签,你的代码工作。 –

相关问题