1
$.ajax({
    type: "POST",
    url: "Sample/Test",
    dataType: "html",
    async: false,
    success: function (resp) {
    }
})

我正在对控制器进行 Ajax 调用,我的控制器返回部分视图(ActionResult),我更新页面中特定 div 的 HTML。看起来不错。

如果控制器中发生任何错误,它会返回一个错误页面,该页面返回给 Ajax Success。

我这里有 2 个问题

  1. 在直截了当的场景中,错误页面设置在部分 Div 中
  2. 在某些情况下,我会动态查找 div id,然后单独更新该部分。由于错误页面是 div 未定义,因此没有任何反应。

我如何让它重定向到错误页面,而不是在出现错误时部分更新。

即使我尝试使用 try catch 在 Catch 中返回视图而不是部分视图。但这没有用。

我也尝试从下面的代码重定向

protected void Application_Error(object sender, EventArgs e)
{
    Response.Redirect("~/Error/Error");
}

这也将错误页面返回到 ajax 成功。

当我的应用程序中有多个 ajax 调用时,重定向到完整错误页面的最佳方法是什么?

我遇到的其他方法是在成功中找到文本并在那里重定向。这是一个好方法吗?

任何常见的实现方式,因为我在多个地方都有 ajax 调用。

谢谢

4

3 回答 3

0

如果您的 AJAX 正在调用更新局部视图的控制器方法,那么它需要如下所示:

public PartialViewResult Test(string myVar)
{
    return PartialView("_MyPartialView", MyViewModel);
}

然后,您需要获取 ajax 来更新您的部分视图包含的 div:

function UpdateTest() {
    $.ajax({
        url: '/Sample/Test',
        type: 'GET',
        data: { myVar: "@Model.MyVar" },
        success: function (result) {
            $("#partial-div").html(result);
        }
    });
}
于 2013-10-28T11:05:12.300 回答
0
public ActionResult Index()
{
   try
     {
     }
   catch(Exception e)
   { 
    //handle error
    return new HttpStatusCodeResult(500);
   }    
return 
}


function UpdateTest() {
    $.ajax({
        url: '/Sample/Test',
        type: 'GET',
        data: { myVar: "@Model.MyVar" },
        success: function (result) {
            $("#partial-div").html(result);
        },
error: function() {
       document.location.href = '/error'; 
    }       
    });
}
于 2013-10-28T17:20:40.883 回答
0

如果发生任何错误,则使用 If 条件检查数据库值,然后返回查看其他明智的返回部分视图。

于 2013-10-28T11:02:11.660 回答