2013-10-28 4 views
0
$.ajax({ 
    type: "POST", 
    url: "Sample/Test", 
    dataType: "html", 
    async: false, 
    success: function (resp) { 
    } 
}) 

Am делает вызов Ajax к контроллеру и мой контроллер возвращает Частичный вид (ActionResult) и я обновить HTML конкретного DIV на странице. Выглядит неплохо.MVC обновление Частичный вид и ошибок Перенаправление

В случае возникновения ошибки в контроллере возвращается страница ошибки, которая возвращается к успеху Ajax.

У меня есть 2 проблемы здесь

  1. по прямой вперед сценарии страница ошибки устанавливаются в частичном Div
  2. В некоторых случаях я найти динамически Див идентификатор, а затем обновлять этот раздел в одиночку. В качестве страницы с ошибкой значение div не определено, и ничего не происходит.

Как сделать его перенаправлением на страницу ошибки вместо частичного обновления в случае ошибки.

Даже я пытался с try catch, где в Catch я вернул представление вместо частичного просмотра. Но это не сработало.

Я попытался перенаправлять снизу код, а

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

Это также возвращает страницу ошибки Аяксу успеха.

Каков наилучший способ перенаправления на полную страницу с ошибкой, так как у меня есть несколько вызовов ajax в моем приложении?

Другой подход, с которым я столкнулся, - найти текст в успехе и перенаправить туда. это хороший подход?

Любой распространенный способ реализовать этот способ, поскольку у меня есть вызовы ajax в нескольких местах.

Благодаря

ответ

0

значения Проверки базы данных с помощи Если условия с помощью получения количества, если какая-либо ошибка происходит, то вернуться назад, чтобы посмотреть другое мудрое возвращение к частичному виду.

+0

вы пробовали? это не сработало. он по-прежнему обновляется частично. я упомянул в своем вопросе – user2067567

+0

return RedirectToAction («Ошибка», «Ошибка»); Попробуйте это –

0

Если AJAX является вызов метода контроллера, который обновляет частичный вид, то это должно выглядеть следующим образом:

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

Тогда вам нужно получить Аякс, чтобы обновить DIV вашего частичное представление содержит в:

function UpdateTest() { 
    $.ajax({ 
     url: '/Sample/Test', 
     type: 'GET', 
     data: { myVar: "@Model.MyVar" }, 
     success: function (result) { 
      $("#partial-div").html(result); 
     } 
    }); 
} 
+0

Да, это работает отлично! моя проблема в случае ошибки. Я упомянул, что в моем вопросе – user2067567

+0

Извините, я полностью не понял вопрос. Вы можете использовать JavaScriptResult для перенаправления на страницу из запроса AJAX: «public JavaScriptResult ErrorPage() { return JavaScript (" window.location = 'Error /' "); }" –

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'; 
    }  
    }); 
} 
Смежные вопросы