Jeśli błędy ładowania normalnego strony mogę zgłosić szczegóły wyjątku do użytkownika za pośrednictwem widoku Error
i modelu HandleErrorInfo
.Zgłaszanie błędów z Ajax wywołanych metod PartialView w MVC
Jeśli ajax
wezwanie spodziewa się Json
błędy rezultacie mogę jawnie obsługi błędu i przekazać dane do klienta:
public JsonResult Whatever()
{
try
{
DoSomething();
return Json(new { status = "OK" });
}
catch (Exception e)
{
return Json(new { status = "Error", message = e.Message });
}
}
Więc mój problem, nie widzę żadnych sposób Szczegóły Raport o błędach od wywołania Ajax do akcji zwracającej częściowy widok.
$.ajax({
url: 'whatever/trevor',
error: function (jqXHR, status, error) {
alert('An error occured: ' + error);
},
success: function (html) {
$container.html(html);
}
});
Spowoduje to zgłoszenie tylko kodu błędu HTTP (np. Błąd serwera wewnętrznego), który nie jest pomocny dla klienta. Czy istnieje jakiś sprytny trik do przekazania albo udanego wyniku PartialView (html) lub komunikatu o błędzie?
Jawna ocena html z ViewResult
i zwrócenie go jako części obiektu Json
wraz ze statusem wydaje się zbyt śmierdząca. Czy istnieje ustalony wzorzec postępowania w tym scenariuszu?
Darin swoją znajomość MVC zadziwia mnie ponownie. Nie w pełni rozumiem kilka punktów tutaj, ale doszedłem do wniosku, że mogę osiągnąć coś podobnego nieco prostszego z filtrem ajaxowym zarejestrowanym w filtrach globalnych. Wydaje się, że działa dobrze. Dziękuję Ci. – fearofawhackplanet
Tylko uwaga, jeśli używasz powyższego kodu do pułapki 404 i pokazywania niestandardowej strony, prawdopodobnie chcesz dodać Response.TrySkipIisCustomErrors = true (chyba tylko w .NET 3.5 wierzę) –
Działa jak urok, awesome – Dilip